2013-05-06 67 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