2013-10-06 40 views
-2

我用這個簡單的事情爭取時間:PHP:不能通過單引號字符串mysqli的查詢

$var=var;  
$result = "SELECT column1, column2 FROM $db WHERE column3 = '$var' "; 

我得到的錯誤是:您的SQL語法錯誤;檢查對應於您的MySQL服務器版本的手冊,以在第1行'\'var \'附近使用正確的語法。

名稱是正確的,它在mysql查詢中起作用。想想我嘗試了所有可能的引用選項,有什麼不對?

更新:根據要求我用了逃逸,但仍錯誤相同

$var=var; 
$var = $conn->real_escape_string($var); 
$result = "SELECT column1, column2 FROM {$db} WHERE column3 = '{$var}' "; 
+2

你錯過身邊'var'報價。那是故意的嗎? –

+0

你的意思是在第一行?那就是。 – user2851828

+0

那麼,'var'是一個常量?如果你想存儲一個字符串,那麼你需要引用它。 –

回答

0

必須有

$var = $mysqli->real_escape_string($var); 
$sql = "SELECT column1, column2 FROM {$db} WHERE column3 = '{$var}' "; 

相反的:

$result = "SELECT column1, column2 FROM $db WHERE column3 = '$var' "; 
$result = $mysqli->real_escape_string($result) ; //Totally wrong. 
+0

給了我致命錯誤:調用一個非對象的成員函數real_escape_string()... – user2851828

+0

所以'$ mysqli'不是'mysqli'對象的對象嗎? – MackieeE

+0

我不知道,是否有一些先決條件? – user2851828

0

我在MySQL控制檯測試帶有錯誤的SQL查詢:

mysql> SELECT column1, column2 FROM WHERE column3 = 'varvalue'; 

它給這個錯誤:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE column3 = 'varvalue'' at line 1 

事實上表名丟失。我猜你的變量$ db可能是null/empty/unset。

請嘗試:

$db = "mytable"; 
$var = "varvalue"; 
$result = "SELECT column1, column2 FROM $db WHERE column3 = '$var' "; 
+0

不,沒有WHERE過濾器的查詢工作 – user2851828

+0

我沒有更好的主意,然後要求您在MySQL查詢之前回顯$ result SQL字符串嗎? – jacouh

+0

回聲如預期 – user2851828