Requette SQL
Résolu/Fermé
parousky
Messages postés
325
Date d'inscription
mardi 11 septembre 2012
Statut
Membre
Dernière intervention
20 février 2022
-
30 janv. 2014 à 18:50
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 31 janv. 2014 à 15:53
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 31 janv. 2014 à 15:53
A voir également:
- Requette SQL
- Récupération serveur sql - Télécharger - Gestion de données
- Sql replace plusieurs valeurs - Forum Programmation
- Logiciel sql - Télécharger - Bases de données
- Dupliquer une table sql ✓ - Forum Programmation
- Sql commence par ✓ - Forum Webmastering
5 réponses
totodunet
Messages postés
1377
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
5 mars 2020
199
30 janv. 2014 à 18:56
30 janv. 2014 à 18:56
salut,
fais ça par étape :
pose
puis ensuite affiches là :
et executes le code SQL affiché dans ton SGBD
si ça marche pas donnes nous ce qui est affiché par echo $req2
fais ça par étape :
pose
$req2='SELECT * FROM annonces WHERE Code =: $cod';
puis ensuite affiches là :
echo $req2;
et executes le code SQL affiché dans ton SGBD
si ça marche pas donnes nous ce qui est affiché par echo $req2
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
30 janv. 2014 à 20:40
30 janv. 2014 à 20:40
Bonsoir,
Et ceci: ???
Est-ce que $cod est un entier? Si oui, évitez l'injection de code SQL:
Et ceci: ???
$cod = $_GET['code']; $req2 = $bdd->query("SELECT * FROM annonces WHERE Code =: $cod");
Est-ce que $cod est un entier? Si oui, évitez l'injection de code SQL:
$cod = (int) $_GET['code']; $req2 = $bdd->query("SELECT * FROM annonces WHERE Code =: $cod");
parousky
Messages postés
325
Date d'inscription
mardi 11 septembre 2012
Statut
Membre
Dernière intervention
20 février 2022
6
31 janv. 2014 à 12:31
31 janv. 2014 à 12:31
Non ça ne marche toujours pas... J'ai mélangez vos deux codes ( parce que Code est bien un entier), alors j'ai écris ce code là :
<?php
$cod = (int) $_GET['code'];
$req2='SELECT * FROM annonces WHERE Code =: $cod';
echo $req2;
while($donnees = $req2->fetch())
{
?>
<p class="pseudo">
<?php echo $donnees['pseudo']; ?>
</p>
<a href="Profil.php" class="profil">Voir le profil de l'annonceur</a>
<?php
}
}
?>
Et j'obtiens le message :
SELECT * FROM annonces WHERE Code =: $cod
Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\Servicity\rechercher.php on line 234
<?php
$cod = (int) $_GET['code'];
$req2='SELECT * FROM annonces WHERE Code =: $cod';
echo $req2;
while($donnees = $req2->fetch())
{
?>
<p class="pseudo">
<?php echo $donnees['pseudo']; ?>
</p>
<a href="Profil.php" class="profil">Voir le profil de l'annonceur</a>
<?php
}
}
?>
Et j'obtiens le message :
SELECT * FROM annonces WHERE Code =: $cod
Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\Servicity\rechercher.php on line 234
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
31 janv. 2014 à 13:43
31 janv. 2014 à 13:43
Bonjour,
1) Enlève les : dans ta requête SQL
2) En PHP, si tu utilises des guillemets simples, les variables ne sont pas remplacées par leur valeur. Donc '$cod' donne $cod. Utilise des guillemets doubles : "$cod" donne 876 (par exemple).
Ta ligne devient :
Ou, si tu tiens aux guillemets simples :
Xavier
1) Enlève les : dans ta requête SQL
2) En PHP, si tu utilises des guillemets simples, les variables ne sont pas remplacées par leur valeur. Donc '$cod' donne $cod. Utilise des guillemets doubles : "$cod" donne 876 (par exemple).
Ta ligne devient :
$req2 = "SELECT * FROM annonces WHERE Code = $cod";
Ou, si tu tiens aux guillemets simples :
$req2 = 'SELECT * FROM annonces WHERE Code = ' . $cod;
Xavier
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
31 janv. 2014 à 13:51
31 janv. 2014 à 13:51
le (int) est très important.
Si dans l'URL une personne entre autre chose que une valeur entière, ça bloquera l'injection de code
Si dans l'URL une personne entre autre chose que une valeur entière, ça bloquera l'injection de code
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
31 janv. 2014 à 15:53
31 janv. 2014 à 15:53
Bien sûr ! J'ai enlevé cette partie du code parce qu'il l'avait intégrée et ne rentrait pas en ligne de compte dans la correction que je propose...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
parousky
Messages postés
325
Date d'inscription
mardi 11 septembre 2012
Statut
Membre
Dernière intervention
20 février 2022
6
31 janv. 2014 à 15:08
31 janv. 2014 à 15:08
J'ai résolu le problème ! Effectivement, les " marchent mieux que les ' pour la requête, et j'ai écris ce code là :
<?php
$cod = (int) $_GET['code'];
$req2=$bdd->query("SELECT * FROM annonces WHERE Code = $cod");
while($donnees = $req2->fetch())
{
?>
<p class="pseudo">
<?php echo $donnees['pseudo']; ?>
</p>
<a href="Profil.php" class="profil">Voir le profil de l'annonceur</a>
<?php
}
}
?>
Et ca marche nickel !
<?php
$cod = (int) $_GET['code'];
$req2=$bdd->query("SELECT * FROM annonces WHERE Code = $cod");
while($donnees = $req2->fetch())
{
?>
<p class="pseudo">
<?php echo $donnees['pseudo']; ?>
</p>
<a href="Profil.php" class="profil">Voir le profil de l'annonceur</a>
<?php
}
}
?>
Et ca marche nickel !