2013-05-06 75 views
0

我有一個簡單的mysqli查詢無法運行時,我將where條件設置爲字符串像下面的代碼(選項='標題'),但是,如果我用一個整數(id = 1)它的工作原理!MySQLi錯誤與一個簡單的WHERE子句SELECT語句

這裏是代碼:

$db_name = "gp"; 
$db_username = "root"; 
$db_pass = ""; 
$db_host = "localhost"; 
$mysqli = new mysqli($db_host, $db_username, $db_pass, $db_name); 
mysqli_report(MYSQLI_REPORT_ERROR); 

if($sql_title = $mysqli->query("SELECT value FROM options WHERE option='title' LIMIT 1")){ 
    if($sql_title->num_rows > 0){ 
     $row_title = $sql_title->fetch_object(); 
     $title = $row_title->value; 
     echo $title; 
    } 
    else 
     echo "No Title!"; 
} 
else 
    echo $mysqli->error; 

$mysqli->close(); 

我的數據庫結構

-------------------------- 
| id | option | value | 
-------------------------- 
| 1 | title | hello | 
| 2 | image | logo.jpg | 

錯誤 SCREAM:錯誤抑制忽略 警告(!)的mysqli ::查詢()(42000/1064):你的SQL語法有錯誤;在第9行的C:\ wamp \ www \ test.php中的第1行'option ='標題'LIMIT 1'附近檢查與您的MySQL服務器版本對應的正確語法對應的手冊。

回答

0

option是在MySQL中的保留字,你必須把它放在反引號。

if($sql_title = $mysqli->query("SELECT value FROM options WHERE `option`='title' LIMIT 1")){ 
+0

非常感謝你解決了這個問題。 – sandrows 2013-05-06 20:14:28

0

optionkeyword in MySQL。如果你想使用它作爲一個列標識符,確保始終括在反引號:

SELECT value FROM options WHERE `option`='title' LIMIT 1