Warning: mysql_fetch_assoc() expects parameter 1

Fermé
sarah177 Messages postés 2 Date d'inscription dimanche 8 décembre 2013 Statut Membre Dernière intervention 8 décembre 2013 - 8 déc. 2013 à 12:52
ElementW Messages postés 4814 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 8 déc. 2013 à 17:04
Bonjour,
Mon code affiche l'erreur suivant:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in xx/public_html/xx/ajaxCode.php on line 5.

La ligne 5 correspond au code suivant:
$code = mysql_query("SELECT * FROM rah_codes WHERE code=".$_POST["idCode"]." and published=1"); 

Voici le code complet:

<?php 
mysql_connect("localhost","user","mdp");
mysql_select_db("bd");
$code = mysql_query("SELECT * FROM rah_codes WHERE code=".$_POST["idCode"]." and published=1");
$row = mysql_fetch_assoc($code);
if ($row){
echo '<div align=center>Bonjour ';
echo $row['nomag'];
echo '<br/>';
echo 'vous bénéficiez d\'une remise de 10%</div>';
?>
<input type="hidden" value="vrai" name="vrai" id="vrai">
<?php
}

else {
echo '<div align=center>Le code saisie est erroné</div>';
?>
<input type="hidden" value="faux" name="vrai" id="vrai">
<?php
}
?>

Merci


2 réponses

ElementW Messages postés 4814 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 227
8 déc. 2013 à 13:12
Salut,
mysql_fetch_assoc
se plaint d'avoir un boolean et la doc de PHP dit clairement que quand
mysql_query
renvoie un boolean, c'est
false
et c'est qu'il y a eu un problème
.
Utilise
mysql_error
pour savoir ce qui cloche.
0
sarah177 Messages postés 2 Date d'inscription dimanche 8 décembre 2013 Statut Membre Dernière intervention 8 décembre 2013
8 déc. 2013 à 16:15
Merci pour votre aide , problème résolu en mettant des quotes(') les chaînes de caractères passées à la requêtes.

$code = mysql_query("SELECT * FROM rah_codes WHERE code='".$_POST["idCode"]."' and published=1");


Encore merci
0
ElementW Messages postés 4814 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 227
8 déc. 2013 à 17:04
Accède à ta page en mettant
' OR 1 OR '
en tant que paramètre (modifie ta form par ex), et voit le résultat... Ca s'appelle une injection SQL et c'est mortel, pour s'en protéger utilise mysql_real_escape_string sur tes paramères qui vont dans ta requête.
0

Discussions similaires