我正在使用预处理语句和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()。我找不到任何关于此的信息,这与我构建的其他系统几乎完全相同,并且从未遇到过这个问题。
答案 0 :(得分:1)
我认为问题在于您在两种情况下使用$query
。一旦作为SQL字符串,一次准备你的声明:
$query = "%".$query."%";
...
$query = $con->prepare($sql)
所以当你运行这一行时:
$query->bind_param("si", $query <--- bind to itself?
执行实际查询将崩溃。