probleme avec ociBindByName !

probleme avec ociBindByName ! - PHP - Programmation

Marsh Posté le 07-05-2003 à 16:33:52    

Salut,
 
J'ai un petit probleme avec la fonction ociBindByName.
 
Voici mon code :
 

Code :
  1. <?php
  2. require ("fonctions.inc" );
  3. if (! empty ($HTTP_POST_VARS)) {
  4. //traitement du formulaire
  5. $identifiant = $HTTP_POST_VARS["Nom_enseignant"];
  6. if ($identifiant == "" ) {
  7.  echo "L'identifiant est obligatoire !\n <BR>";
  8. }
  9. else {
  10.  // requete d'identification.
  11.  $requete = "SELECT I.Role, P.Nom, P.Prenom1
  12.     FROM Intervenant I, Personne P
  13.     WHERE P.Nom = :p1
  14.     AND P.Num_ss = I.Num_ss ";
  15.  $erreur = array ("code" => 0,"message" => "" );
  16.  //Connexion a la base.
  17.  $ok = ($connexion = ociLogon("yann","yann","mabase" ));
  18.  //requete de reconnaissance de l'enseignant.
  19.  if ($ok) {//connexion ok
  20.   //analyse de la requete.
  21.   $ok = ($curseur = ociParse ($connexion, $requete));
  22.  }
  23.  if ($ok) {
  24.  // association entre le parametre et la variable PHP.
  25.   $ok = ociBindByName ($curseur, ":p1", $identifiant, 40);
  26.  }
  27.  //execution de la requete.
  28.  if ($ok) {
  29.   $ok = ociExecute ($curseur);
  30.  }
  31.  //fetch.
  32.  if ($ok) {
  33.   $nombre = ociFetchInto ($curseur,$ligne, OCI_ASSOC);
  34.  }
  35.  if (! $ok) { //erreur quelque part.
  36.   // Si connexionOK, recuperer l'erreur du curseur
  37.   // sinon recuperer l'erreur de la connexion
  38.   $erreur = $connexion?ociError($curseur):ociError();
  39.  }
  40.  //if (! ($ligne = db_executer_requete ($requete, $erreur, $identifiant))) {
  41.   //echo "$erreur[code] - $erreur[message] <BR>";
  42.  //}
  43.  //else {
  44.   echo "$ligne[ROLE] - $ligne[NOM] - $ligne[PRENOM1] <BR>";
  45.  //}
  46. }
  47. }
  48. ?>


 
Je récupère par l'intermédiaire d'un formulaire le Nom_Enseignant et je le stocke dans ma variable $identifiant.
J'ai lié :p1 à identifiant mais quand j'exécute la requete je n'ai aucun tuple resultat.
Quand j'exécute la requete directement avec le Nom_enseignant a la place du parametre je recois bien le resultat.
Une idée ?

Reply

Marsh Posté le 07-05-2003 à 16:33:52   

Reply

Marsh Posté le 07-05-2003 à 16:40:06    

essaye ça :
 

Code :
  1. $ok = ociBindByName ($curseur, ":p1", &$identifiant, 40);
  2. //c'est le & qui est important


 
 
c'est de la reference qu'il faut. Dis moi si c'est bon


Message édité par Masure le 07-05-2003 à 16:40:59
Reply

Marsh Posté le 07-05-2003 à 16:43:39    

non j'ai deja essayé en faisant ca

Reply

Marsh Posté le 07-05-2003 à 16:51:12    

ecrit ta requete en 1 ligne apres le $req ou utilise la concatenation plutot que le retour a la ligne ca fait des blagues desfois.
 
enleve tous les test a la con avec ta variable $ok, plus de if, que du pur

Reply

Marsh Posté le 07-05-2003 à 16:54:24    

ca n'a rien changé

Reply

Marsh Posté le 07-05-2003 à 16:56:00    

Code :
  1. <?php
  2.   require ("fonctions.inc" );
  3.      $identifiant = $HTTP_POST_VARS["Nom_enseignant"];
  4.      echo "$identifiant<br>" ;
  5.      $requete = "SELECT I.Role, P.Nom, P.Prenom1 ";
  6.      $requete .= "FROM Intervenant I, Personne P ";
  7.      $requete .= "WHERE P.Nom = :identifiant ";
  8.      $requete .= "AND P.Num_ss = I.Num_ss ";
  9.      echo "$requete<br>" ;
  10.      $connexion = ociLogon("yann","yann","mabase" ));
  11.      $curseur = ociParse ($connexion, $requete);
  12.      $ociBindByName ($curseur, ":identifiant", &$identifiant, -1); 
  13.      ociExecute ($curseur);
  14.      ociFetchStatement($stmt,$results);
  15.      print_r($results) ;
  16. ?>


 
ca c'est pur (si je me suis pas planté)


Message édité par Masure le 07-05-2003 à 16:58:57
Reply

Marsh Posté le 07-05-2003 à 18:10:16    

J'ai essayé ton code mais il me sors :  
 

Code :
  1. laltsupr
  2. SELECT I.Role, P.Nom, P.Prenom1 FROM Intervenant I, Personne P WHERE P.Nom = :identifiant AND P.Num_ss = I.Num_ss
  3. Array ( [ROLE] => Array ( ) [NOM] => Array ( ) [PRENOM1] => Array ( ) )


 
Il n'y a rien
Sinon au lieu d'utiliser :p1 je peux mettre directement '$identifiant' dans la requete (et ca marche ce coup ci) meme si j'aurai preferé utiliser ociBindByName

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed