2015-04-08 85 views
-2

我嘗試了這些SQL querys:SQL給出了一個錯誤

$sql = "SELECT * FROM `order` WHERE `KLANT_ID` = \'1\'"; 
$sql = "SELECT * FROM order WHERE KLANT_ID = '1'"; 
$sql = "SELECT * FROM order WHERE KLANT_ID = 1"; 

如果我跑這我得到這個錯誤:

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本在1號線

我通常做這個查詢1是一個變量$ ID,但是這給了使用近「爲了WHERE KLANT_ID =」 1「」正確的語法手冊同樣的錯誤。從命令和KLANT_ID中刪除``這些都不起作用。 此外,當我改變這一部分:\'1\'爲「1」這是行不通的

這是人與PHP的mysqli和PHPMYADMIN數據庫做

謝謝

+0

刪除反斜槓,它們不是必需的。 –

+0

與\'1 \'的東西。 – jarlh

+0

如果我用'1'stil不起作用 – user1743508

回答

0

您手動逃逸單引號在你的查詢,而這是不需要的(因爲你使用雙引號的變量)。
您需要撤消轉義。

$sql = "SELECT * FROM `order` WHERE `KLANT_ID` = '1'"; 

此外,使用this功能逃跑,不只是反斜線變量。

+0

如果我使用您的sql它不會工作,具有相同的錯誤。即使我將'1'更改爲'$ var',它也不會工作 – user1743508

+0

然後,您是否正在運行我提供的查詢。此查詢不應觸發您所說的錯誤。 – Blaatpraat

+0

我看到您的更新:現在驗證它是否符合查詢我寫了...你沒有試過這個查詢。 – Blaatpraat

0

試試這個

$sql = "SELECT * FROM `order` WHERE `KLANT_ID` = 1"; 

東陽KLANT_ID爲int類型可以是查詢它讀成字符串

0

如果您正在使用的MySQLi(你提到),那麼你應該使用預處理語句,以避免SQL注射,不逃逸。

假設你的數據庫連接是$ db;

$test = 1; 
$stmt = $db->prepare("SELECT * FROM `order` WHERE `KLANT_ID` = ?"); 
$stmt->bind_param('i',$test); 
$stmt->execute(); 
$result = $stmt->get_result(); 
$stmt->close();