lorik Posté 10 Novembre 2013 Posté 10 Novembre 2013 Bonjour à tous, Un truc tout C... mais qui me pourrit la vie ! Une requete bete et mechante (qui fonctionne !), pour updater des données, et un comptage du nombre d'enregistrement affectés. Simplement, quand il n'y a pas d'enregistrement concernés, je me retrouve avec une erreur dans mes logs ! ErrorException' with message 'mysql_affected_rows() expects parameter 1 to be resource, boolean given' in /home/loprik/domains/XXXxxxr.php:53mysql_affected_rows(true). ça me fait gonfler mes fichiers logs pour rien, et je comprends vraiment pas le problème Une idée de qulequ'un de sympa me dépanerait bien . Par avance merci.
SStephane Posté 10 Novembre 2013 Posté 10 Novembre 2013 La fonction attend une resource en parametre, le lui passe un booléen (je ne fais que traduire l'erreur), si d'ailleurs tu postais le code en question, peut-être serais-je plus clair
lorik Posté 10 Novembre 2013 Auteur Posté 10 Novembre 2013 Bonjour et merci, Stephane, Voila le code (mais c'est vriament du basique) $req="update source_pages set current_crawl=0, erreurs=(erreurs+1), statut='erreur1' WHERE date_crawl=0 and current_crawl<'$vieuxcrawl' and current_crawl<>0"; $res=mysql_query($req); if ($res) { $nb_supressions=mysql_affected_rows($res); } Pour le booleen, oui, j'ai vu ça, la question, c'est pourquoi ça me met un booléen au lieu d'un bete 'zero' s'il n'y a pas d'enregistrement affecté ? Je confirme que la requete passe bien sous phpmyadmin...
captain_torche Posté 10 Novembre 2013 Posté 10 Novembre 2013 Selon la doc PHP : Pour les autres types de requêtes, INSERT, UPDATE, DELETE, DROP, etc., mysql_query() retourne TRUE en cas de succès ou FALSE en cas d'erreur. Tu ne dois donc pas passer $res en paramètre de la fonction mysql_affected_rows(), vu qu'il ne s'agit pas d'une ressource de connexion mais toujours d'un booléen.
SStephane Posté 10 Novembre 2013 Posté 10 Novembre 2013 $link = mysql_connect('machin','truc',''); $req="update source_pages set current_crawl=0, erreurs=(erreurs+1), statut='erreur1' WHERE date_crawl=0 and current_crawl<'$vieuxcrawl' and current_crawl<>0"; $res=mysql_query($req); if ($res) { $nb_supressions=mysql_affected_rows($link); } ou $req="update source_pages set current_crawl=0, erreurs=(erreurs+1), statut='erreur1' WHERE date_crawl=0 and current_crawl<'$vieuxcrawl' and current_crawl<>0"; $res=mysql_query($req); if ($res) { $nb_supressions=mysql_affected_rows(); }
lorik Posté 11 Novembre 2013 Auteur Posté 11 Novembre 2013 Waho, subtil, subtil . Je suis dév du dimanche, j'avais pas vu la nuance sur la notion de 'connexion'. je passe toujours l'appel mysql, y compris dans mes mysql_num_rows(). Je suppose que je dois faire la même erreur, je vais checker cela. Merci pour tout, ça marche nickel.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant