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 будет немного более упрощенной.