передаю в функцию параметр и хочу использовать его в регулярном выражении, но этот код не работает и не выдает ошибок. 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();
//...
}
На уровне запроса тоже не проблема, необходимо только учитывать что PDO подставляет самодостаточный параметр, т.е. у вас будет кусочек текста. Вот к тексту и надо приклеить символ %
, для чего есть функция concat
:
WHERE code_1 LIKE concat(: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();
//...
}
Почитайте тут, полезно.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Почему такой очевидный код выводит {"data":{}}? И как вывести все поля Entity без костылей типа $data = ['card_number' => $card->getCardNumber()];?