Probleme avec requete php SELECT

Fermé
gillesnas84 Messages postés 5 Date d'inscription jeudi 27 août 2009 Statut Membre Dernière intervention 1 mai 2014 - 22 mars 2014 à 15:05
88av Messages postés 263 Date d'inscription dimanche 3 mars 2013 Statut Membre Dernière intervention 17 avril 2015 - 23 mars 2014 à 15:39
Bonjour , je debute dans la programmation php et la manipulation des bdd sous mysql.
J'ai récemment developpé une appli qui gere les envois de courriers dans une agence de voyage.
Now je travaille sur un autre projet et j'ai un souci avec l'affichage d'information stockées dans la bdd.
le code de ma requete ci-dessous me renvooi un tableau vide mais il fonctionne quand je donne une valeur constante à l' 'ID'


<?php
require_once "admin/bcpcnx.php";
//fiche indivIDuelle sommaire

$bcpcnx = new mysqli("localhost", "root", "", "bucrepdb");
if ($bcpcnx->connect_errno) {
echo "Echec lors de la connexion à MySQL: (" . $bcpcnx->connect_errno . ") " . $bcpcnx->connect_error;
}

if (!($stmt = $bcpcnx->prepare("SELECT ID , nom, prenom, genre,email,province, ville,statut FROM individu WHERE ID = '".$_GET['ID']."' "))) {
echo "Echec lors de la préparation de la requête : (" . $bcpcnx->errno . ") " . $bcpcnx->error;
}
if (!$stmt->execute()) {
echo "Echec lors de l'exécution de la requête : (" . $stmt->errno . ") " . $stmt->error;
}

if (!($res = $stmt->get_result())) {
echo "Echec lors de la récupération du jeu de résultats : (" . $stmt->errno . ") " . $stmt->error;

$individu = mysqli_fetch_assoc($res);

mysqli_free_result($bcpcnx,$res);
mysqli_close($bcpcnx);


}

//var_dump($res1->fetch_row());

?>
je serai vraiment reconnaissant si quelqu'un pouvais m'aider a ce sujet

2 réponses

88av Messages postés 263 Date d'inscription dimanche 3 mars 2013 Statut Membre Dernière intervention 17 avril 2015 7
Modifié par 88av le 22/03/2014 à 15:23
Bonjour,

Dans ta requete, ici :

$bcpcnx->prepare("SELECT ID , nom, prenom, genre,email,province, ville,statut FROM individu WHERE ID = '".$_GET['ID']."' ")


Je croit que le $_GET['ID'] peut faire une injection sql :

https://fr.wikipedia.org/wiki/Injection_SQL

Pour éviter ça, regarde ici :

http://fr.openclassrooms.com/informatique/cours/concevez-votre-site-web-avec-php-et-mysql/construire-des-requetes-en-fonction-de-variables

------------------------
Aussi, pour selectionner tous les champs, au lieu de les lister, tu peut faire :

$bcpcnx->prepare("SELECT * FROM individu WHERE ID = '".$_GET['ID']."' ")




Au revoir
Si vous avez un calcul à faire, vous pouvez aller sur mon site web...
0
HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 608
22 mars 2014 à 15:49
Il peut aussi conserver la liste des champs dans son SELECT pour ne pas retourner trop de données... "SELECT *" est une solution de facilité qui alourdit trop souvent les requêtes.
0
88av Messages postés 263 Date d'inscription dimanche 3 mars 2013 Statut Membre Dernière intervention 17 avril 2015 7
22 mars 2014 à 17:28
D'accord.
0
gillesnas84 Messages postés 5 Date d'inscription jeudi 27 août 2009 Statut Membre Dernière intervention 1 mai 2014
23 mars 2014 à 14:05
merci 88av, mais les champs que je mentionne ci-dessus ne sont que quelques uns d'une table "individu" qui en contient 10 de plus !
0
88av Messages postés 263 Date d'inscription dimanche 3 mars 2013 Statut Membre Dernière intervention 17 avril 2015 7
23 mars 2014 à 15:39
D'accord...
0
HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 608
22 mars 2014 à 15:48
Il faudrait tester la requête SQL en l'affichant simplement, pour voir si la variable ID est bien remplie.
0