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

В моей таблице MSQL одна строка содержит столбец код как "1001000 1810 26".

Мой 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 Ответ

0 голосов
/ 29 октября 2018

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

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

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

...