【问题标题】:MySQLi Error with a simple WHERE clause SELECT statement一个简单的 WHERE 子句 SELECT 语句的 MySQLi 错误
【发布时间】:2013-04-30 15:00:59
【问题描述】:

我有一个简单的 mysqli 查询,当我将 where 条件设置为如下代码 (option='title') 之类的字符串时,它无法运行,但是如果我使用整数代替 (id=1),它就可以工作!

代码如下:

$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::query(): (42000/1064): 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 9 行的 C:\wamp\www\test.php 的第 1 行的 'option='title' LIMIT 1' 附近使用正确的语法

【问题讨论】:

    标签: mysqli where-clause fetch sql


    【解决方案1】:

    option 是一个keyword in MySQL。如果您想将其用作列标识符,请确保始终将其括在反引号中:

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

    【讨论】:

      【解决方案2】:

      option是mysql中的保留字,要反引号。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-16
        • 1970-01-01
        • 1970-01-01
        • 2012-01-26
        • 2012-09-03
        • 2010-12-07
        • 1970-01-01
        • 2015-03-16
        相关资源
        最近更新 更多