Problème requête SQL
Bonjour, j'ai une table SQL dans laquelle des champs parmi ceux que je veux récupérer sont des entiers. Alors je ne sais pas trop comment écrire cette requête. J'ai écrit ceci :
$req2 = $bdd->prepare("SELECT * FROM users WHERE (G = '1' AND R = '2') OR (G = '1' AND R = '23')");
while($donnees = $req2->fetch())
{
echo "Test";
echo $donnees['pseudo'];
}
Mais rien ne s'affiche ! Même pas Test, ce qui veut dire que je ne rentre même pas dans la boucle while ! Voyez-vous une erreur dans cette requête ?
Merci d'avance !
$req2 = $bdd->prepare("SELECT * FROM users WHERE (G = '1' AND R = '2') OR (G = '1' AND R = '23')");
while($donnees = $req2->fetch())
{
echo "Test";
echo $donnees['pseudo'];
}
Mais rien ne s'affiche ! Même pas Test, ce qui veut dire que je ne rentre même pas dans la boucle while ! Voyez-vous une erreur dans cette requête ?
Merci d'avance !
3 réponses
-
Prepare te permet de faire des requête préparé, celle-ci n'est as exécuté desuite.
Fais plutôt un query dans le cas présent à la place OU bien ->execute() avant le fetch -
Oui merci ça marche bien ! Enfin presque bien ! Je possède deux bases de données, j'effectue une première requête et j'affiche le résultat uniquement si la requête SQL de la deuxième table ne renvoie rien. Voilà ce que j'ai écris :
// PREMIERE REQUETE SQL
$req2 = $bdd->query("SELECT * FROM table1 WHERE (G = '1' AND R = '2') OR (G = '1' AND R = '23')");
while($donnees = $req2->fetch())
{
$pseudo1 = $donnees['Pseudo'];
$pseudo2 = $_SESSION['pseudo'];
// SECONDE REQUETE SQL
$req = $bdd->query("SELECT * FROM table2 WHERE (Pseudo1 = $pseudo1 AND Pseudo2 = $pseudo2) OR (Pseudo1 = $pseudo2 AND Pseudo2 = $pseudo1)");
$reponse = $req->fetch();
if(empty($reponse))
{
echo $donnees['Pseudo'];
// Affichage des données de chaque utlisateur.
}
}
Mais ça me dit qu'il y a une erreur sur la ligne "$reponse = $req->fetch()"
Et je ne vois pas trop comment résoudre ce problème...
Vois-tu une solution ?
Merci d'avance ! -
Pour ta deuxième requête, faut mieux passer par une requête préparé pour le coup, si $pseudo1 est une chaîne, ça te fait tout planter.
donc :
$bdd->prepare
Pseudo1=? pour tes variables
Et enfin un execute $req->execute(array($pseudo1,$pseudo2));