Aller au contenu

numrows et fetch_array


Sujets conseillés

Posté

voilà, j'ai tout essayé, mais, a chaque fois que j'utilise mysql_fetch_array() ou mysql_numrows(), il me met une erreur de ce type

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/0/0/bdbourgeron/redesign/site2/forum/forum.php on line 14

ou ceci :

Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/0/0/bdbourgeron/redesign/site2/forum/forum.php on line 14

pourtant, le code est simple :

$res = mysql_fetch_array($req);

ou ceci :

$res = mysql_num_rows($req);

je ne comprend plus ...

Posté

Salut Bigornot,

Il est impossible de t'aider pour cela sans savoir ce que contient la variable $req.

Elle doit contenir le résultat d'un appel à mysql_query() dans le code qui précède.

Dan

Posté

Il doit y avoir une erreur dans la requete passée dans $req

Pour voir l'erreur utilise mysql_error()

$req = mysql_query("SELECT truc FROM table") or die(mysql_error());
$res = mysql_fetch_array($req);

De cette fasson si la requete comporte une erreur le chargement s'arrêtera et l'erreur se affichée.

Posté

$db = mysql_connect($db_chemin,$db_user,$db_pass);

mysql_select_db($base,$db);

$req = mysql_query("SELECT * FROM forum WHERE first!=no ORDER BY idmess DESC");

$res = mysql_num_rows($req);

voila tout ...

c'est bon, non ?

je vois pas trop d'erreur ( et meme pas du tout !)

Posté

Avec des quotes autour de la valeur:

$req = mysql_query("SELECT * FROM forum WHERE first != 'no' ORDER BY idmess DESC");

et pour autant que la table forum et les champs first et idmess existent bien, cela devrait fonctionner ;)

Dan

Posté

petite question :

voilà ma requete :

mysql_query("INSERT INTO `forum`(`idtitre`,`titre`,`pseudo`,`message`,`date`,`heure`,`first` )

VALUES ('$titre', '$titre', '$pseudo', '$message', '$date', '$heure','ok')) or die ("utjgf")

comment se fait il qu'elle ne marche pas ?

ce n'est pas normal !

Posté

pour info, certaines fonctions mysql renvoient une erreur si ton recordset a 0 enregistrements ... donc bien penser a ce que tu ais un nombre d'enregistrements >0 avant de faire plus de traitement

Posté
pour info, certaines fonctions mysql renvoient une erreur si ton recordset a 0 enregistrements ... donc bien penser a ce que tu ais un nombre d'enregistrements >0 avant de faire plus de traitement

Attention, ce n'est pas la fonction qui renvoie une erreur, mais la facon dont le script est construit, et une incompréhension du langage. php gère les variables à la volée, autrement dit, il n'est pas besoin de déclarer un type à une variable, et il n'y a meme pas besoin de la définir. Exemple :

<?

echo $a;

?>

On ne connais pas la valeur de $a, et on ne connais meme pas son type (booléen, integer, string, etc..).

Donc : on fait une requète sql, qui renvoie 0 (zéro) champs. Et on teste le nombre de champs :

if ( zero ) alors .....

Mais pour php, les données 0, FALSE, ERROR, et NON DEFINI c'est du pareil au même.

L'erreur vient donc du fait que la personne teste le nombre de champs, et oublie que php peut renvoyer FALSE, ou ERROR. PHP continue donc, en pensant avoir un nombre de champs égal à zéro, alors que le programme renvoyait peut etre une erreur due à une non-connection à la base de données.

Voilà.

Anonymus.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...