2013-02-04 64 views
0

我在從SQL中提取數據時遇到了一些問題。PHP MYSQL數據提取問題

當我用下面的語句,它工作正常

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

當我使用的參數名稱使用相同的,我面臨着一些問題,我使用的代碼是

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

我也嘗試通過拼接名稱,如\'facebook\'

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

嘗試'name = $ name'而不是 – Abubakkar

回答

3

使用Double quotes所以你不需要任何轉義單引號。

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

作爲旁註,查詢是用SQL Injection脆弱,如果變量的值(小號)從外部來了。請看下面的文章,瞭解如何防止它。通過使用PreparedStatements你可以擺脫使用單引號圍繞值。

+1

+1您鍵入的快。 ;) – Leri

0

使用mysqli的,而不是MySQL的。

解決方案爲您的查詢:

$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

感謝您的回答Suhel ...它工作正常。 –

0

你應該用你的周圍串查詢雙引號。這些變量只能在雙qoutes內被替代。

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

此外,你不應該使用mysql庫,使用PDO或mysqli來代替。不要將原始POST或GET數據放入查詢中。