Partage
  • Partager sur Facebook
  • Partager sur Twitter

[MySQL] Where id = --- ? ----

Requête SQL

Sujet résolu
22 décembre 2014 à 23:46:43

Bonjour à tous,

Je souhaiterais créer un système d'articles. Pour cela, quand on clique sur un lien, on accède à une page avec un argument transmis grâce à  $_GET . Cette page affiche donc les champs de la BDD qui correspondent à l'id. Voilà à quoi ressemble mon code :

$id = $_GET['id'];
$reponse = $bdd->query('SELECT titre FROM article WHERE id=$id');
while ($donnes = $reponse->fetch())
{
	echo $reponse['titre'];
}
 

Bien évidemment, la syntaxe de ma deuxième ligne est incorrecte. Qu'elle est celle que je dois utiliser ?

Je vous remercie de votre aide,

Fragen

-
Edité par Fragen 22 décembre 2014 à 23:52:27

  • Partager sur Facebook
  • Partager sur Twitter
23 décembre 2014 à 8:41:06

Bonjour,

Tu utilises apparemment PDO, autant en profiter pour sécuriser ton code en préparant ta requête pour éviter les injections SQL (imagines que quelqu'un remplace le code id dans l'URL par "1;DELETE FROM article;" ...)

$requete = $bdd->prepare('SELECT titre FROM article WHERE id=:id;');
$articles = $requete->execute(array('id' => $_GET['id']));
foreach($articles as $article)
{
    echo $article['titre'];
}
  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
23 décembre 2014 à 19:31:50

Merci de ta réponse. J'ai sécurisé mon code. J'ai réussi à faire fonctionner le tout avec :

SELECT auteur FROM article WHERE id=" .$_GET['id']. "

Sujet résolu ! ;)

  • Partager sur Facebook
  • Partager sur Twitter
23 décembre 2014 à 19:38:18

Fragen a écrit:

J'ai sécurisé mon code. J'ai réussi à faire fonctionner le tout avec :

SELECT auteur FROM article WHERE id=" .$_GET['id']. "

Euh ... avec cette requête, ce n'est pas du tout sécurisé ... injection SQL !

Si je modifie l'URL en replaçant monsite.com?id=1 par monsite.com?id=1;DELETE FROM article; ... je vide ta table article ...

D'où l'intérêt des requêtes préparées ...

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
23 décembre 2014 à 19:52:33

Ah...

Par contre, je n'ai pas réussi à faire fonctionner le code que tu m'as donné plus haut ;

Je vais essayer de régler ce problème sous peu.

  • Partager sur Facebook
  • Partager sur Twitter
10 février 2022 à 15:41:38

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL