Probleme de requete suite à des nouvelles versions ...

Eléphanteau du PHP | 12 Messages

29 nov. 2005, 17:08

Bonjour, :D

La mise à jour d' Apache avec la version Mysql4.1 a été faite sur notre serveur.
Le problème c'est que tous les scripts php avec la requete $select affichent des messages d'erreurs ! :?:

Faut il faire des changement sur la base de donnée ou bien faire des
modifs de scripts ?

Merci pour les infos

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 nov. 2005, 17:43

Salut,

il faudrait déjà savoir si c'est une erreur PHP ou MySQL
si c'est une erreur MySQL, il faudrait voir l'exemple de requêtes qui pose problème, parceque $select ça n'avance pas beaucoup ;)

Eléphanteau du PHP | 12 Messages

29 nov. 2005, 17:57

Sous phpMyAdmin la requete :
SELECT * FROM catalogue where id=1
fonctionne correctement !

Sur une page php en test :
SELECT * FROM catalogue where id=1
fonctionne correctement !

Mais toujours le même problème lorsque :
SELECT * FROM catalogue where id=$select

le message d'erreur sur la page du site :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/site/fiche.php on line 164

donc après plusieurs tests la valeur '$select ' est introuvable ...

Eléphant du PHP | 200 Messages

29 nov. 2005, 17:57

SELECT * FROM catalogue where id='$select ' :?:


a supposé que $select existe
Univers divided by 0 - cucumber error - reboot

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

29 nov. 2005, 18:04

est-ce que tu as essayé d'afficher ta requete ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 12 Messages

29 nov. 2005, 18:05

La base de donnée existe bien car il affiche un résultat correct avec :
$result3 = mysql_query( "SELECT * FROM catalogue" );

Mais toujours rien quand il y a "where id=select" :

$result3 = mysql_query( "SELECT * FROM catalogue where id=select" );


where id=select ca lui dit : "quand la colonne id est egale a la colonne select".

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 nov. 2005, 18:35

C'est la colonne select ou la variable $select ??

Comme l'a dit Zeus, affiche la requête, si c'est une variable tu verras si elle est insérée

Et affiche le message d'erreur MySQL, tu en sauras plus :
$requete = "SELECT * FROM table";
$result = mysq_query($requete) or die(mysql_error());

Eléphanteau du PHP | 12 Messages

29 nov. 2005, 19:06

id c'est la colonne et $select la variable

Voici le test :

$requete = 'SELECT * FROM catalogue where id=$select' ;
$result = mysql_query($requete) or exit("<p>$requete</p><p>" . mysql_error( ) . '</p>') ;

et sur la page php il s'affiche :

SELECT * FROM catalogue where id=$select
Unknown column '$select' in 'where clause'

ViPHP
pjl
ViPHP | 2119 Messages

29 nov. 2005, 19:18

id c'est la colonne et $select la variable

Voici le test :
$requete = 'SELECT * FROM catalogue where id=$select' ;
$result = mysql_query($requete) or exit("<p>$requete</p><p>" . mysql_error( ) . '</p>') ;
et sur la page php il s'affiche :

SELECT * FROM catalogue where id=$select
Unknown column '$select' in 'where clause'
si tu prennais l'habitue d'utiliser la coloration syntaxtique, tu aurais de suite vu ton erreur.
Avec ta syntaxe, $select est considéré comme une chaine de caractère et non comme une variable.

Eléphanteau du PHP | 12 Messages

29 nov. 2005, 19:25

erreur de ma part sur mon dernier message :

$select a toujours été une chaine de caractère !!!!!!

ViPHP
pjl
ViPHP | 2119 Messages

29 nov. 2005, 19:27

le $ est réservé pour les variable, tu es obligé del'utiliser pour une chaine de caractères ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 nov. 2005, 19:43

Tu te mélangerais pas un peu les pinceaux entre colonne, variable et chaine de caractères ? :roll:

la même requête...
... où $select est une colonne
$requete = 'SELECT * FROM catalogue where id=$select' ;
... où $select est une variable (qui contient donc une chaîne, donc à entourer de guillemets)
$requete = 'SELECT * FROM catalogue where id="'.$select.'"' ;
... où $select est une chaîne de caractères (donc à entourer de guillemets aussi)
$requete = 'SELECT * FROM catalogue where id="$select"' ;
et donc, si tu as vraiment une chaîne de caractères $select, c'est pas terrible...

Eléphanteau du PHP | 12 Messages

30 nov. 2005, 10:31

Bonjour,
Mon problème a été résolu !!! [(!!)]
Ce n'était pas sur les scripts , l'erreur se situait sur la nouvelle mise à jour de Mysql4.1. qui avait été installé.

Merci encore pour la qualité de ce forum pour les conseils (+)
[:-)]