Mysqli — как исправить ошибку с bind_param?

$q="Проверка";
$query = $link->prepare("SELECT id, name FROM cities WHERE name LIKE CONCAT(?,'%')");
$query->bind_param('s',$q);
$query->execute();
$res = $query->get_result();


Выдаёт ошибку: "Fatal error: Call to a member function bind_param() on a non-object"
Ошибка, соответственно, указывает на строку с bind_param...

Запрос
SELECT id, name
FROM cities
WHERE name LIKE CONCAT( 'Мос', '%' )

Через phpMyAdmin отрабатывает правильно.

Выкинуть bind и передавать массив со значением в $query->execute(array($q));

$query = $link->prepare("SELECT id, name FROM cities WHERE name LIKE CONCAT('?','%')");
//$query->bind_param('s',$q);
//$query->execute();
$query->execute(array($q));
$res = $query->get_result();

не помогает, выдаёт ошибку
Fatal error: Call to a member function execute() on a non-object

Оффтоп: У меня какая-то беда с тостером - не работают ни комменты, ни редактирование, ни ответы... только у меня?
  • Вопрос задан
  • 4594 просмотра
Пригласить эксперта
Ответы на вопрос 3
FanatPHP
@FanatPHP
Чебуратор тега РНР
Перед коннектом к mysqli пишем волшебную строчку
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

и выясняем, какая проблема была с нашим запросом
Ответ написан
Комментировать
IgorO2
@IgorO2
73
попробуйте так написать, $query->execute($q);
Ответ написан
@veontomo
Ваша переменная, скорее всего, равна false, а не объекту, как вы ожидаете: www.php.net/manual/en/mysqli.prepare.php. А у false нет методов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы