У меня есть следующий код:
$countQuery = "SELECT ARTICLE_NO FROM ? WHERE upper(ARTICLE_NAME) LIKE '% ? %'";
if ($numRecords = $con->prepare($countQuery)) {
$numRecords->bind_param("ss", $table, $brand);
$numRecords->execute();
$data = $con->query($countQuery) or die(print_r($con->error));
$rowcount = mysql_num_rows($data);
$rows = getRowsByArticleSearch($query, $table, $max);
$last = ceil($rowcount/$page_rows);
}
Который должен работать нормально. Однако я получаю сообщение об ошибке:
У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '? ГДЕ верхний (ARTICLE_NAME), КАК "%?%" В строке 1
Если я поставлю
SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE '% o %';
Запрос работает нормально. Таблица $ определена выше, и запрос получен из GET, и оба являются правильными действительными значениями. Почему это не удается?
редактирование:
меняется на:
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS1 WHERE upper(ARTICLE_NAME) LIKE '% ? %'";
if ($numRecords = $con->prepare($countQuery)) {
$numRecords->bind_param("s", $query);
приводит к ошибке:
Предупреждение: mysqli_stmt :: bind_param () [mysqli-stmt.bind-param]: Количество переменных не соответствует количеству параметров в подготовленном утверждении в C: \ Program Files \ EasyPHP 3.0 \ www \ prog \ get_records. php на линии 38
Команды не синхронизированы; Вы не можете запустить эту команду сейчас
где как
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS1 WHERE upper(ARTICLE_NAME) LIKE ?";
if ($numRecords = $con->prepare($countQuery)) {
$numRecords->bind_param("s", "%".$query."%");
Результаты в
Неустранимая ошибка: невозможно передать параметр 2 по ссылке в C: \ Program Files \ EasyPHP 3.0 \ www \ prog \ get_records.php в строке 38
и, наконец,
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS1 WHERE upper(ARTICLE_NAME) LIKE ? ";
if ($numRecords = $con->prepare($countQuery)) {
$numRecords->bind_param("s", $query);
даст только:
Команды не синхронизированы; Вы не можете запустить эту команду сейчас
Разве нельзя использовать параметр для подтверждения LIKE?