Bonjour,
J'apprends peu à peu PDO qui semble s'imposer de plus en plus avec le temps. Afin de pouvoir poursuivre sur de bonnes bases, j'ai besoin de votre avis.
$bdd = new PDO ('mysql:host=localhost;dbname=insectelevage2', 'root', '');
$req = $bdd->query("SELECT name FROM users WHERE username='$_SESSION[pseudo]'");
$data = $req->fetch();
echo $data['name'];
Le code ci-dessus fonctionne, mais je suis interpelé par l'absence de '' dans mon select. Habituellement, j'utilisais $_SESSION['pseudo'] avant de me lancer en PDO.
(Si je rajoute les apostrophes, cela ne fonctionne pas).
Ou alors est-il préférable de passer par une variable ?
$pseudo = $_SESSION['pseudo'];
$bdd = new PDO ('mysql:host=localhost;dbname=insectelevage2', 'root', '');
$req = $bdd->query("SELECT name FROM users WHERE username='$pseudo'");
$data = $req->fetch();
echo $data['name'];
J'ai cru comprendre que niveau sécurité, il ne fallait pas se préoccuper en PDO.
On peut donc me confirmer qu'aucune mesure n'est à prendre dans mon code ?
Les requêtes préparées joueraient un rôle dans la sécurité ?
Est-il donc préférable d'utiliser que des requêtes préparées ?
Vous auriez quelques mots d'explications ?
Merci d'avance =)
$bdd = new PDO ('mysql:host=localhost;dbname=insectelevage2', 'root', '');
$req = $bdd->prepare("SELECT name FROM users WHERE username= :username");
$d = array(
'username' => $_SESSION['pseudo']
);
$req->execute($d);
$req2 = $req->fetch();
echo $req2['name'];
Pour ton soucis d'apostrohe et guillement je ne vois pas exactement...
Sinon, oui en effet, c'est mieux de faire des requetes préparées.
Tu as aussi le moyen d'utiliser des Bind
<?php
/* Exécute une requête préparée en associant des variables PHP */
$calories = 150;
$couleur = 'rouge';
$sth = $dbh->prepare('SELECT nom, couleur, calories
FROM fruit
WHERE calories < ? AND couleur = ?');
$sth->bindValue(1, $calories, PDO::PARAM_INT);
$sth->bindValue(2, $couleur, PDO::PARAM_STR);
$sth->execute();
?>
Si je dis pas de bêtise, il n'y a aucune crainte d'injection en utilisant cette façon(preparer les requetes)
Salut,
Pour complété ce que kewai a dit, tu peux aussi faire ceci:
<?php
$db = new PDO ('mysql:host=localhost;dbname=insectelevage2', 'root', '');
$req = $db->prepare("SELECT name FROM users WHERE username = ?");
$req->execute([$_SESSION['pseudo']]);
$data = $req->fetch();
var_dump($data['name']);
?>
Aussi, deux conseils :
insectelevage2
n'est aucun des deux ;$d
.PS: Tu comptes tenir un élevage d'insecte ? :p
Au moins on peut dire qu'il y a du choix en PDO =p
J'avais entendu parler de Bind, sans savoir exactement =)
Forever : Merci pour ces conseils. C'est plutôt "brouillon" car c'est des essais.
J'organiserais mieux mon code si un jour je devais le publier ^^
Et oui ce futur site, peut-être, touche au monde des arthropodes, mais encore une fois ce n'est que des essais.
Je suis fier de moi, je n'ai pas encore arrêter (et pourtant, c'est pas les obstacles qu'il manquait...).
J'organiserais mieux mon code si un jour je devais le publier ^^
NON, maitenant, il faut que ce soit une habitude. (Je ne veux pas que tu finisses ton projet. :D)