PDO / MySQL: подстановочный знак ('_') в PHP кажется экранированным по умолчанию

В моей таблице MSQL одна строка имеет код столбца "1001000181026".

Мой PHP-скрипт интересует только полужирная часть (1810), и я использую символы подчеркивания (_) для других символов кода.

Но: это не работает с PDO (0 результатов)! С другой стороны, если я напишу SELECT код вручную в phpMyAdmin, он работает хорошо (1 результат).

Вот PDO/PHP-код (который не работает):

$code = '_______1810__'; 
$preparequery = 'SELECT * FROM table WHERE code LIKE :code';
$stmt = $conn->prepare($preparequery);
$stmt->bindValue("code", $code);
$y = $stmt->rowCount();

echo '<p>We have '.$y.' row(s).</p>'; // We have 0 row(s).

Запрос в phpMyAdmin работает нормально:

SELECT * FROM `table` WHERE code LIKE '_______1810__'

Это дает мне 1 результат, как и ожидалось.

Что может быть не так с кодом PHP (PDO)? Спасибо за помощь!

1 ответ

Вы можете изменить свой запрос на:

SELECT * FROM table WHERE code LIKE CONCAT('_______', :code, '__')

Таким образом, вам не нужно беспокоиться о том, как работают заполнители. Также сторона PHP будет немного более упрощенной.

Другие вопросы по тегам