PDO PHP, подготовленный запрос и регулярные выражения

188
03 марта 2018, 21:27

передаю в функцию параметр и хочу использовать его в регулярном выражении, но этот код не работает и не выдает ошибок. Eсли вместо ':code%' пишу '$code%', т.е. просто передаю переменную, то код выполняется как должен. Хочу использовать именно подготовленный запрос. Подскажите правильный синтаксис.

function codeFindPart($code)
{
  //...
  $sql="SELECT code_1
        FROM fkko_id
        WHERE code_1 LIKE ':code%' ";
  $result=$pdo->prepare($sql);
  $result->bindParam(":code",$code,PDO::PARAM_STR);
  $result->execute();
  //...
 }
Answer 1

На уровне запроса тоже не проблема, необходимо только учитывать что PDO подставляет самодостаточный параметр, т.е. у вас будет кусочек текста. Вот к тексту и надо приклеить символ %, для чего есть функция concat:

WHERE code_1 LIKE concat(:code, '%')
Answer 2

Меняйте не запрос, а саму передаваемую переменную.

function codeFindPart($code)
{
    //...
    $sql="SELECT code_1
        FROM fkko_id
        WHERE code_1 LIKE :code ";
    $result=$pdo->prepare($sql);
    $result->bindParam(":code", "$code%", PDO::PARAM_STR);
    $result->execute();
    //...
}

Почитайте тут, полезно.

READ ALSO
Неправильно открывается ссылка

Неправильно открывается ссылка

Здравствуйте! Есть строка:

183
Сравнить текущую дату с датой из БД

Сравнить текущую дату с датой из БД

Всем приветЕсть дата в MySql Такого формата

182
Вывод всех полей Entity без костылей

Вывод всех полей Entity без костылей

Почему такой очевидный код выводит {"data":{}}? И как вывести все поля Entity без костылей типа $data = ['card_number' => $card->getCardNumber()];?

140
перенос из одной таблицы в дургую

перенос из одной таблицы в дургую

Всем доброго времени суток! Помогите, пожалуйста с mysql

148