2013-02-04 4 views
0

Je suis confronté à un problème avec l'extraction de données à partir de SQL.PHP MYSQL problème de récupération de données

Lorsque j'utilise la déclaration ci-dessous, il fonctionne très bien

$sql = 'SELECT `Name`, `Des`, `Url`, `about`, `date` FROM `data` where name = \'facebook\''; 
$retval = mysql_query($sql, $conn); 

Lorsque j'utilise le même en utilisant un nom de paramètre, je suis confronté à un problème, le code j'est

$name = $_GET['name']; 
$sql = 'SELECT `Name`, `Des`, `Url`, `about`, `date` FROM `data` where name = \'$name''; 
$retval = mysql_query($sql, $conn); 

J'ai aussi essayé par nom concaténer comme \'facebook\'

$name1 = "\'".$name . " \'"; but it is also not working . 
+0

Essayez 'name = $ name' à la place – Abubakkar

Répondre

3

utilisation Double quotes donc vous n'aurez pas besoin d'échapper des guillemets simples.

$sql = "SELECT Name, Des, Url, about, date 
     FROM data 
     where name = '$name'"; 

titre d'observation, la requête est vulnérable à SQL Injection si la valeur (s) des variables est venu de l'extérieur. S'il vous plaît jeter un oeil à l'article ci-dessous pour apprendre comment éviter cela. En utilisant PreparedStatements vous pouvez vous débarrasser de l'utilisation de guillemets simples autour des valeurs.

+1

+1 vous tapez rapidement. ;) – Leri

0

Utilisation Mysqli au lieu de Mysql.

Solution pour votre requête:

$name = $_GET['name']; 
$sql = "SELECT Name, Des, Url, about, date FROM data where name = '".mysql_real_escape_string($name)."'"; 
$retval = mysql_query($sql, $conn); 
+0

Merci pour votre réponse Suhel ... Cela fonctionne bien. –

0

Vous devez utiliser des guillemets autour de votre requête de chaîne. Les variables ne peuvent être substituées qu'à l'intérieur des doubles qoutes.

$name = $_GET['name']; 
$sql = "SELECT `Name`, `Des`, `Url`, `about`, `date` FROM `data` where name = '$name'"; 
$retval = mysql_query($sql, $conn); 

De même, vous ne devriez pas utiliser la bibliothèque mysql, utilisez plutôt PDO ou mysqli. Ne mettez pas de données POST ou GET brutes dans votre requête.

Questions connexes