Page 1 sur 1

requête sql sur une base de donnée oracle

Posté : 23 juin 2009, 19:08
par nouhoun
Je debute avec php que j'utilise avec une base de donnée oracle
j'ai créé une page web dans laquelle l'utilisateur fournit certains renseignements. En cliquant sur un bouton "valider"
ces informations sont enregistées dans une table EMPLOYE

Le code php exécuté est le suivant

<?php
//récupération des données saisies
$mecano=$_POST['numsolde'];
$nom=$_POST['nom_gendarme'];
$prenoms=$_POST['prenom_gendarme'];
$datenais=$_POST['datenais_gendarme'];
$lieunais=$_POST['lieunais_gendarme'];
$unite=$_POST['unite_actuelle'];
$grade=$_POST['grade_actuel'];
$sexe='M';
//connexion à la base de données     
$conn = OCILogon('bti', 'btigend','X.X.X.X:1521/dbalpha');


//ordre sql pour insérer les données
$req = 'INSERT INTO EMPLOYE(Numsolde, nom, prenom, sexe, date_naissance, code_lieu_naissance, code_unite_actuelle, code_grade_actuel) VALUES(:mymecano, :mynom, :myprenoms, :mysexe, :mydatenais, :mylieunais, :myunite, :mygrade)';

$stid =ociparse($conn, $req);
if (!$stid) {
  $e = ocierror($conn);
  print htmlentities($e['message']);
    exit;}

ocibindbyname($stid, ":mymecano", $mecano);
ocibindbyname($stid, ":mynom", $nom);
ocibindbyname($stid, ":myprenoms", $prenoms);
ocibindbyname($stid, ":mysexe", $sexe);
ocibindbyname($stid, ":mydatenais", $datenais);
ocibindbyname($stid, ":mylieunais", $lieunais);
ocibindbyname($stid, ":myunite", $unite);
ocibindbyname($stid, ":mygrade", $grade);

$r = ociexecute($stid);
echo($req);
if ($r)
print "Une ligne a été insérée";
else
print "aucune ligne n'a été insérée";
ociclose($conn);
  
 ?>
quand je clique sur le bouton valider le message suivant s'affiche "aucune ligne n'a été insérée"
J'ai effectué quelques tests.
La connexion à la base de donnée se passe sans problème
Mais mon code semble coincer au niveau des bind car le "echo($req);" que j'ai inséré en guise de test après
"$r = ociexecute($stid);" me ramène le résultat suivant "INSERT INTO GENDARM(Numsolde, nom, prenom, sexe, date_naissance, code_lieu_naissance, code_unite_actuelle, code_grade_actuel) VALUES(:mymecano, :mynom, :myprenoms, :mysexe, :mydatenais, :mylieunais, :myunite, :mygrade)"
comment dois-je faire?

Posté : 23 juin 2009, 22:34
par charabia
La partie du code d'insertion ne devrait pas plutôt être
$req = "INSERT INTO EMPLOYE(Numsolde, nom, prenom, sexe, date_naissance, code_lieu_naissance, code_unite_actuelle, code_grade_actuel) VALUES('".$mecano."','".$nom."','".$prenom."','".$sexe."','".$datenais."','".$lieunais."','".$unite."','".$grade."')"; 
:?:

Posté : 24 juin 2009, 10:55
par nouhoun
quand je fais un
echo ($stid);
j'obtiens le resultat suivant
Resource id #5

cela signifie que la requête est bonne
Mon problème se situe au niveau des
ocibindbyname($stid, ":mymecano", $mecano);
ocibindbyname($stid, ":mynom", $nom);
ocibindbyname($stid, ":myprenoms", $prenoms);
ocibindbyname($stid, ":mysexe", $sexe);
ocibindbyname($stid, ":mydatenais", $datenais);
ocibindbyname($stid, ":mylieunais", $lieunais);
ocibindbyname($stid, ":myunite", $unite);
ocibindbyname($stid, ":mygrade", $grade);
Mais je sais pas que faire