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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : requête sql sur une base de donnée oracle

par nouhoun » 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

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

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

par nouhoun » 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?