mysql_query retourne "FALSE"

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 : mysql_query retourne "FALSE"

par Spooky » 08 juil. 2009, 15:26

:-*
bon ben on va faire comme ça....

Sérieux, merci beaucoup pour le dérangement et pour la rapidité de réponse, ça marche parfaitement !!!!!

par ouckileou » 08 juil. 2009, 15:10

"Film noir" est une chaîne, à encadrer par des quotes.

par Spooky » 08 juil. 2009, 14:59

Ok.

Le 2e $queryCheck (ligne 18 du script PHP que j'ai posté) renvoie avec mysql_error :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'noir' at line 1

Je précise que $annee et $genre sont des $_POST et ont les valeurs suivantes : '1983' et 'film noir'.

Ce qui donne pour le 1er $verif (ligne 4 ) :
string 'SELECT annee FROM t_annee WHERE annee=1983' (length=42)
Et pour le 2e $verif (ligne 17) :
string 'SELECT genre FROM t_genre WHERE genre=Film noir' (length=47)
Obtenus avec var_dump.

Je reprécise enfin que les 3 premiers mysql_query ( lignes 5, 9 et 14 ) fonctionnent parfaitement, et donc que je me connecte parfaitement à ma base.
C'est le 4e (ligne 17) qui m...

par ouckileou » 08 juil. 2009, 14:06

Pour aider au debug il y a un post-it tout en haut de ce forum : "PHP+SQL : Etapes à suivre pour résoudre les problèmes"

mysql_query retourne "FALSE"

par Spooky » 08 juil. 2009, 12:39

Bonjour,

J'ai semblerait-il un problème de connexion, que je n'arrive pas à résoudre.

J'ai trouvé sur le net un morceau de script qui permet de vérifier l'existence de doublon dans une base, afin de ne pas inserer deux fois le même élément. Je l'ai amélioré en récupérant l'ID de l'enregistrement existant.
Pour la première table ça marche parfaitement, mais dès la seconde, mysql_query me retourne FALSE, et crée une erreur du type "mysql_num_rows(): supplied argument is not a valid MySQL result resource".

J'ai tout essayé : changer mes variables, fermer et rouvrir ma connexion, inverser l'ordre de mes appels... rien n'y fait !!!

Voici le code :

$objConn=mysql_connect(...);
$objMaBase=mysql_select_db('db', $objConn);

$verif = "SELECT annee FROM t_annee WHERE annee=".$annee;
$queryCheck = mysql_query($verif, $objConn);
$check = mysql_num_rows($queryCheck);
if($check!=0){ 
   $req_id = "SELECT id_annee FROM t_annee WHERE annee=".$annee;
   $recup_id = mysql_query($req_id, $objConn);
   $affich_id = mysql_fetch_array($recup_id);
   $id_annee = $affich_id['id_annee'];
}else{
$sql = "INSERT INTO t_annee (annee) VALUES ('$annee')";
$requete = mysql_query($sql, $objConn) or die( mysql_error() );   
}

$verif = 'SELECT genre FROM t_genre WHERE genre='.$genre;
$queryCheck = mysql_query($verif, $objConn); // <---- C'est ici que ça coince
$check = mysql_num_rows($queryCheck); // <--- ici est retournée l'erreur "supplied argument..."
if($check!=0){
   $req_id = "SELECT id_genre FROM t_genre WHERE genre=".$genre;
   $recup_id = mysql_query($req_id, $objConn);
   $affich_id = mysql_fetch_array($recup_id);
   $id_genre = $affich_id['id_genre'];
}else{
$sql = "INSERT INTO t_genre (genre) VALUES ('$genre')";
$requete = mysql_query($sql, $objConn) or die( mysql_error() );   
}

Code : Tout sélectionner

-- Version du serveur: 5.0.67 CREATE TABLE t_annee ( id_annee int(11) NOT NULL auto_increment, annee int(4) default NULL, PRIMARY KEY (id_annee) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE t_genre ( id_genre int(11) NOT NULL auto_increment, genre varchar(20) default NULL, PRIMARY KEY (id_genre) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Merci par avance...