MySQLi Catchable致命错误

时间:2010-03-03 20:46:12

标签: php mysqli prepared-statement

我正在使用预处理语句和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()。我找不到任何关于此的信息,这与我构建的其他系统几乎完全相同,并且从未遇到过这个问题。

1 个答案:

答案 0 :(得分:1)

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

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

所以当你运行这一行时:

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

执行实际查询将崩溃。