【问题标题】:MySQLi Catchable Fatal ErrorMySQLi 可捕获的致命错误
【发布时间】:2010-03-03 20:46:11
【问题描述】:

我正在使用准备好的语句和 MySQLi,目前出现此错误。

PHP Catchable fatal error:  Object of class mysqli_stmt could not be converted to string in /Users/me/path/to/project/ModelBase/City.php on line 31

它来自的代码(完整功能):

    function select($query, $limit)
{
    $query = "%".$query."%";
    $con = ModelBase::getConnection();
    $sql = "SELECT name FROM cities WHERE name LIKE ? LIMIT ?";
    $query = $con->prepare($sql) or die("Error preparing sql in City ".parent::$db_conn->error);
    $query->bind_param("si", $query, $limit) or die("Error binding params in City ".parent::$db_conn->error);
    $query->execute() or die("Error executing query in City");

    $tmp = "";
    $res = $query->bind_result($tmp);
    while($query->fetch());
    {
        $citylist[] = $tmp;
    }
    $query->close();
}

像 31 一样是 $query->execute()。我找不到任何关于此的信息,这与我构建的其他系统几乎相同的语法,从未遇到过这个问题。

【问题讨论】:

    标签: php mysqli prepared-statement


    【解决方案1】:

    我认为问题在于您在两种情况下使用$query。一次作为 SQL 字符串,一次用于准备语句:

    $query = "%".$query."%";
    ...
    $query = $con->prepare($sql) 
    

    所以当你运行这一行时:

     $query->bind_param("si", $query <--- bind to itself?
    

    实际查询的执行会崩溃。

    【讨论】:

      猜你喜欢
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      • 2022-12-21
      • 2015-09-28
      相关资源
      最近更新 更多