On sait que le résultat retourné par une requête MySQL, usuellement dans la ressource $result, peut être de deux types: booléen ou tableau, selon la situation.
Si la requête a échoué, c'est automatiquement le booléen FALSE: pas de problème.
Si elle a abouti, cela peut être ou le booléen TRUE, ou un tableau de valeurs, selon la nature de la requête.
Si l'on IGNORE LE TEXTE DE LA REQUETE (ou si l'on veut écrire une fonction qui exploite le résultat quel qu'en soit le type), existe-t-il un moyen de tester la nature du résultat?
if($result) est TRUE dans tous les cas;
if($is_array($result)) est toujours FALSE, puisque $result est une ressource.
On peut évidemment essayer de le lire comme un tableau au moyen d'une des nombreuses fonctions mysql_fetch_***() et autres. Mais cela entraînera une erreur s'il ne s'agit pas d'un tableau.
Il semble qu'il n'exite pas d'autre moyen que de vérifier si la commande est de celles qui retournent un booléen (DROP, ALTER, UPDATE, etc.), ou de celles qui retournent un tableau (SELECT, SHOW, EXPLAIN, etc.), ce qui est extrêmement laborieux, et suppose en tout cas que le texte de la requête est accessible.
Il devrait tout de même exister une solution simple et efficace, non?
Partager