2013-02-17 46 views
0

我有一個MySQL查詢像下面PHP發送查詢數據庫,報價不工作

mysql_query("select * from user where name='$name' LIMIT 1"); 

如果想從客戶端我輸入「約翰」會有MySQL錯誤在我的查詢。 防止這種情況的最佳做法是什麼?

+0

什麼是你所得到的錯誤? – 2013-02-17 11:10:12

+0

不要使用mysql_函數,因爲它們已被棄用,而是使用mysqli或PDO,將來會爲您節省很多麻煩 – 2013-02-17 11:11:48

回答

1

首先,不推薦使用mysql_ *函數,而應該使用PDO或mysqli_。這兩個庫實現了準備好的語句,這些語句會自動避開您的輸入

如果你想使用mysql_ *代替,你必須調用mysql_real_escape_string到通過VAR

mysql_query("select * from user where name='" . mysql_real_escape_string($name) . "' LIMIT 1"); 
1

嘗試:

$query = sprintf("select * from user where name='%s', mysql_real_escape_string($name)); 
$result = mysql_query($query); 

確保$名稱中包含你認爲它(回聲它確認)。