8768 sujets

Développement web côté serveur, CMS

Bonjour,
J'ai un problème avec une requête inscrite dans un script PHP.
Cette requête n'est pas la première du script, et celle d'avant fonctionne correctement.
Voici la requête qui bloque :
$requ = "SELECT nom, nch FROM `calendrier` WHERE `valid` = 'non' ORDER BY `datecontact` ASC, `arrive` DESC";
$resn = $conn->query($requ)
or die('Erreur SELECT en cours. Requête = '.$requ.' <br>'.$conn->error.'<br>erreur N° '.$conn->errno);


C'est pas bien méchant... la "DIE" m'affiche les strings mais aucune valeur pour $conn->error ni pour $conn->errno.


Or, la $conn est bonne (voir à propos de la requête précédente, et je suis même allé jusqu'à vérifier la conn avant cette requête maléfique :
if ($conn->connect_error) {
  die("Connexion HS: " . $conn->connect_error);
}
echo "Connexion en ordre";


Si je tape la requête manuellement dans la bd en sql (dans phpmyadmin), le tableau s'affiche avec les 2 lignes qui vérifient le WHERE de la requête !!! Les données existent donc bien.

Je ne comprends pas le "truc" qui m'aveugle peut-être et je suis bloqué par le message d'erreur fourni par WAMP SERVER que j'utilise en local : Warning: mysqli::query(): Couldn't fetch mysqli in C:\wamp64\www\issirac\gestion\gestinc.php on line 330.

Si quelqu'un peut m'aider je lui serai reconnaissant.
Bonsoir,

C'est difficile de t'aider sans pouvoir tester, mais essayons.

Tu pourrais peut-être essayer
var_dump($conn);
pour voir ce qui en sort.

Lorsque je rencontre ce genre de message d'erreur, la 1ère chose que je fais si je ne comprends pas le motif est de chercher le message d'erreur entre guillemets dans Google (ou autre).

Par exemple ici, je vois que beaucoup ont rencontré cette erreur après une fermeture accidentelle de la connection.

Une autre possibilité, mais peu probable, est que l'utilisateur MySQL connecté n'ait pas les droits suffisants pour lire la table.

Bon courage pour la suite
Bonsoir,
merci pour tes suggestions et tes efforts de bien poser les choses.
Le
var_dump($conn)
me donne :
object(mysqli)[1]
  public 'client_version' => int 70426
  public 'connect_errno' => int 0
  public 'connect_error' => null


Peut-être cela te parle-t-il ? Pas à moi

Oui effectivement je pourrais mettre tout le code considéré, tu as parfaitement raison...
MERCI migli Smiley amour !... et du coup je ne le mets pas ...
Car pour pouvoir écrire le code dépouillé de plein de truc sans connexion objective avec l'erreur, j'ai mis un include() en stand-by... Une petite vérif ...
ET LÀ : BINGO, la page se déroule, elle ne bloque plus sur la requête qui n'a pas d'erreur. A moi de trouver le "truc" générant cette erreur sans erreur....

PS
Au fait :
1) je viens sur les forums en dernier ressort... donc je n'ai pas trouvé de réponse satisfaisante avec gogole (le prochaine fois, je l'écrirai Smiley cligne )
2) La fermeture accidentelle avant la requête ? Apparemment non, d'ailleurs je l'ai écrit, ça (
a écrit :
"Or, la $conn est bonne (voir à propos de la requête précédente, et je suis même allé jusqu'à vérifier la conn avant cette requête maléfique : "
) en donnant le code correspondant.
3) les droits : je suis en php, c'est un script usuel pour les requêtes, il n'est donc pas question de droit pour des opérations alambiquées, juste de l'affichage de données issues de la table dans la base de données déjà ouverte par $conn, si la base est accessible il n'y a aucune raison pour qu'elle devienne inaccessible (voir encore le code de vérification faite juste avant la requête :
a écrit :
if ($conn->connect_error) {
  die("Connexion HS: " . $conn->connect_error);
}
echo "Connexion en ordre";
Meilleure solution