"L'argument fourni n'est pas une ressource de résultat MySQL valide" signifie qu'une fonction mysql _...() s'attend à ce que vous passiez une ressource de résultat mais que vous ayez passé autre chose, par exemple.
$result = false;
$row = mysql_fetch_array($result, MYSQL_ASSOC);
// => Supplied argument is not a valid MySQL result resource
Alors, pourquoi $ result être false
? Amost c'est toujours parce que la requête précédente a échoué et qu'il n'y a pas de gestion des erreurs dans le script. Chaque requête peut échouer, il n'y a rien que vous puissiez faire pour empêcher cela. Par conséquent, vous avez toujours besoin d'une sorte de gestion des erreurs afin que votre script n'essaie pas de traiter le résultat quand il n'y en a pas (mais une condition d'erreur). La gestion d'erreur la plus simple consiste à laisser le script s'arrêter dès qu'une erreur survient.
$sql = 'SELECT x,y,z FROM ...';
$result = mysql_query($sql, $mysql) or die(mysql_error());
mysql_query() retourne false
s'il y avait une erreur. Dans ce cas, l'instruction après or
est exécutée, c'est-à-dire si la requête échoue, php affichera le dernier message d'erreur de MySQL, puis quittera.
Vous souhaiterez peut-être implémenter une routine de gestion d'erreur plus avancée, bien que ...
lorsqu'un objet PDO est défini sur PDO :: ERRMODE_EXCEPTION, une exception est générée lorsqu'une erreur se produit. C'est un peu plus difficile à manquer que par rapport à une valeur de retour (simple).
edit: ceci est une réécriture complète de la réponse originale. La première suggestion était de regarder la valeur de wait_timeout.
je pourrais être en train de lire ce mal, mais il semble que la valeur par défaut est peut-être 28800 secondes, ce qui est de 8 heures ... si vous exécutez quelque chose sur 8 heures, les scripts PHP peuvent ne pas être votre réponse pour d'autres raisons! –
oops .... "L'argument fourni n'est pas une ressource de résultat MySQL valide" - c'est quelque chose de complètement différent. Permettez-moi de réécrire toute la réponse .... – VolkerK
Merci pour cela. J'ai mysql_query suivi directement par mysql_fetch_assoc. Le script prend actuellement au maximum 10 minutes. – Alex