簡體   English   中英

添加 where 子句時出錯

[英]Error when adding where clause

這可能是初學者的錯誤,但不幸的是我無法弄清楚。

當我運行下面的代碼時,我收到錯誤 'errno' => int 1064 'sqlstate' => string '42000' (length=5) 'error' => string 'You have an error in your SQL syntax; 檢查與您的 MySQL 服務器版本相對應的手冊,以獲取在第 1 行的 '\\'Caribbean\\'' 附近使用的正確語法(長度 = 159)

如果我使用“select * from Country”,則查詢有效,但是當我添加“where Region = 'Caribbean'”時,它不會。

$sql = "select * from Country where Region = 'Caribbean'";
$db = mysqli_init();
$db->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);
@ $db->real_connect('localhost', 'user', 'passwd', 'world');
if ($db->connect_errno) {
    echo "Failed to connect to MySQL: (". $db->connection_errno . ")".
      $mysqli->connect_error;
    exit;  
}
$sql = $db->real_escape_string($sql);
$result = $db->query($sql);
var_dump($db->error_list);
var_dump($result->fetch_all());

如果您從可能與腳本中的符號不​​同的文本文件復制,您可以嘗試檢查引號符號。 同樣在從鍵盤輸入符號后,如果仍然出現錯誤,請嘗試將國家名稱放入變量並通過引用調用。

您應該只轉義參數,而不是整個查詢。

類似的東西:

$region = 'Caribbean';
$paramRegion = $db->real_escape_string($region);
$sql = "select * from Country where Region = '".$paramRegion."'";
$db = mysqli_init();
$db->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);
@ $db->real_connect('localhost', 'user', 'passwd', 'world');
if ($db->connect_errno) {
    echo "Failed to connect to MySQL: (". $db->connection_errno . ")".
      $mysqli->connect_error;
    exit;  
}
$result = $db->query($sql);
var_dump($db->error_list);
var_dump($result->fetch_all());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM