Използвам подготвени отчети и 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 за отговор № 1Мисля, че проблемът е, че използвате $query
в два контекста. Веднъж като SQL низ и веднъж, за да подготвите изявлението си:
$query = "%".$query."%";
...
$query = $con->prepare($sql)
така че когато стартирате този ред:
$query->bind_param("si", $query <--- bind to itself?
изпълнението на действителната заявка ще се срине.