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

nouhoun
Invité n'ayant pas de compte PHPfrance

23 juin 2009, 19:08

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?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

23 juin 2009, 22:34

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."')"; 
:?:

Petit nouveau ! | 1 Messages

24 juin 2009, 10:55

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