Requête SQL ne s’exécute pas
Utilisateur anonyme
-
cyril-yann Messages postés 4 Statut Membre -
cyril-yann Messages postés 4 Statut Membre -
Bonjour, je suis en train de développer un site web pour une pizzeria.
Pour que le patron puisse modifier au besoin le nom, les prix ... j'ai donc enregistré les pizzas dans une base de donnée. Je décide donc de récupérer le nom de la pizza via une requête SQL pour les afficher sur le site.
Sauf qu'a la place d'avoir le nom de la pizza n°1, j'obtiens La requête n'a pas fonctioné ! SELECT Nom FROM pizzas where Numéro==1;
J'ai donc la certitude que ma requête est lue mais pas exécuter. Avez vous une idée de ou est l’erreur car je ne l'a vois pas.
Merci de votre aide. Et dsl si cela n'est pas claire.
Pour que le patron puisse modifier au besoin le nom, les prix ... j'ai donc enregistré les pizzas dans une base de donnée. Je décide donc de récupérer le nom de la pizza via une requête SQL pour les afficher sur le site.
function nom ($i)
{
$Serveur = "localhost";
$Util = "root" ;
$Mdp = "" ;
$Base = "valpizzas" ;
$Connexion = new mysqli ($Serveur, $Util, $Mdp, $Base);
//Aucun problème de connexion
if($Connexion->connect_error == false)
{
$nomRequete="SELECT Nom
FROM pizzas
where Numéro==$i;";
$ExecRequete = mysqli_query($Connexion, $nomRequete);
if ($ExecRequete == true)
{
echo "La requette a fonctionée !";
}
else
{
echo "La requête n'a pas fonctioné ! ";
}
}
else
{
echo "erreur de connexion";
}
return($nomRequete) ;
}
echo $_SESSION["nom"]=nom(1);
?>
Sauf qu'a la place d'avoir le nom de la pizza n°1, j'obtiens La requête n'a pas fonctioné ! SELECT Nom FROM pizzas where Numéro==1;
J'ai donc la certitude que ma requête est lue mais pas exécuter. Avez vous une idée de ou est l’erreur car je ne l'a vois pas.
Merci de votre aide. Et dsl si cela n'est pas claire.
A voir également:
- Quelle requete écrire pour demander au moteur de recherche tennis
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Google moteur de recherche page d'accueil - Guide
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de pomme mais pas de pomme de terre ? - Forum PHP
- Ecrire en gras sur whatsapp - Guide
- Pourquoi mon moteur de recherche change tout seul ✓ - Forum Réseaux sociaux
3 réponses
Bonjour,
Le type de retour de mysqli_query n'est pas toujours booléen. Cf la doc : https://www.php.net/mysqli_query
« Retourne FALSE en cas d'échec. Pour des requêtes SELECT, SHOW, DESCRIBE ou EXPLAIN réussies, mysqli_query() retournera un objet mysqli_result. Pour les autres types de requêtes ayant réussi, mysqli_query() retournera TRUE. »
Dans ton cas (un SELECT), le type de retour est donc un objet mysqli_query. Du coup, ($ExecRequete == true) est FAUX même si la requête s'est exécutée.
C'est pour ça qu'on renverse la syntaxe
Par ailleurs, tu t'attends à voir apparaître le nom de ta première pizza, mais il te manque la ligne de code qui va lire le résultat de la requête. Ton
Regarde la doc que je t'ai donnée plus haut pour voir ce qu'il faut faire.
Xavier
Le type de retour de mysqli_query n'est pas toujours booléen. Cf la doc : https://www.php.net/mysqli_query
« Retourne FALSE en cas d'échec. Pour des requêtes SELECT, SHOW, DESCRIBE ou EXPLAIN réussies, mysqli_query() retournera un objet mysqli_result. Pour les autres types de requêtes ayant réussi, mysqli_query() retournera TRUE. »
Dans ton cas (un SELECT), le type de retour est donc un objet mysqli_query. Du coup, ($ExecRequete == true) est FAUX même si la requête s'est exécutée.
C'est pour ça qu'on renverse la syntaxe
if ($ExecRequete !== false)et non
if ($ExecRequete == true).
Par ailleurs, tu t'attends à voir apparaître le nom de ta première pizza, mais il te manque la ligne de code qui va lire le résultat de la requête. Ton
return $nomRequete;ne te renverra que le texte de ta requête SQL, tel que tu l'as écrit toi-même, et non son résultat.
Regarde la doc que je t'ai donnée plus haut pour voir ce qu'il faut faire.
Xavier
cyril-yann
Messages postés
4
Statut
Membre
Désoler du temps de réponse j'était occupé. Grâce à ton aide et au doc que tu ma envoyer cela fonctionne. Merci beaucoup.
Bonjour,
C'est probablement le
cdlt
C'est probablement le
==dans le select, ce n'est pas une syntaxe sql mais plutôt php (pour ne pas risquer d'affecter une valeur à une variable sur une comparaison).
cdlt