2010-05-28 3 views
1

Je reçois cette erreur lorsque je passe une chaîne SQL invalide ... J'ai passé la dernière heure à essayer de trouver le problème en supposant - Ce n'est pas mon SQL, il doit être la poignée de db ... De toute façon, j'ai maintenant compris que c'était un mauvais SQL ...mysql_num_rows(): l'argument fourni n'est pas une ressource de résultat MySQL valide

Ce que je veux faire est de tester le résultat de la mysql_query() pour un ensemble de résultats valide.

J'utilise simplement empty ($ result) ... Est-ce le test le plus efficace? Existe-t-il une méthode plus largement acceptée pour tester un résultat pour un résultat valide?

+0

double possible de [Attention: mysql_fetch_ * attend paramètre 1 à être la ressource, erreur donnée booléenne] (http://stackoverflow.com/questions/11674312/warning-mysql-fetch-expects-parameter-1-to-be-resource-boolean-given-error) –

+0

duplicata possible de [Attention: mysql_fetch_array(): l'argument fourni n'est pas un résultat MySQL valide] (http: // stackoverf low.com/questions/795746/warning-mysql-fetch-array-supplied-argument-is-not-a-valid-mysql-result) –

+0

duplication possible de [mysql_num_rows(): l'argument fourni n'est pas une ressource de résultat MySQL valide ] (http://stackoverflow.com/questions/3698740/mysql-num-rows-supplied-argument-is-not-a-valid-mysql-result-resource) – Fluffeh

Répondre

3

mysql_query retournera false s'il y a une erreur

$result = mysql_query('select * from'); 
if ($result === false) { 
    // caused by my invalid input above 
} else { 
    // process as usual 
} 

En fait, vous obtenez l'erreur que vous décrivez parce que vous appelez littéralement mysql_num_rows(false)

+0

Vous pouvez également le tester efficacement avec 'if (! résultat). Cependant, vous devriez envisager d'apprendre les extensions PDO ou mysqli, car vous utilisez une extension sans support pour les instructions préparées et d'autres goodies qui devraient être considérées comme des références. – Erik

+1

@Erik - Vous avez des points valides, mais je préfère toujours utiliser l'égalité stricte ('==='). De plus, je n'utilise pas la bibliothèque 'mysql', OP le fait :) – Matt

Questions connexes