Итак, у меня есть некоторые данные, поступающие через POST из формы с большим количеством флажков, и я пытаюсь найти записи в базе данных, которые соответствуют проверенным параметрам. Существует четыре набора флажков, каждый из которых отправляется как массив. Каждый набор флажков представляет собой один столбец в базе данных, а значения из отмеченных ящиков хранятся в виде строки с разделителями-запятыми. Значения, которые я ищу, не обязательно будут последовательно, а не одно значение LIKE%% Я думаю, что мне нужно разбить его на ряд операторов LIKE, связанных с AND. Вот что я получил:Как я могу динамически построить параметризованный запрос для RedBeanPHP 4?
$query = "";
$i = 1;
$vals = [];
foreach($_POST["category"] as $val){
$query .= "category LIKE :cat".$i." AND ";
$vals[":cat".$i] = "%".$val."%";
$i++;
}
$i = 1;
foreach($_POST["player"] as $val){
$query .= "player LIKE :plyr".$i." AND ";
$vals[":plyr".$i] = "%".$val."%";
$i++;
}
$i = 1;
foreach($_POST["instrument"] as $val){
$query .= "instrument LIKE :inst".$i." AND ";
$vals[":inst".$i] = "%".$val."%";
$i++;
}
$i = 1;
foreach($_POST["material"] as $val){
$query .= "material LIKE :mat".$i." AND ";
$vals[":mat".$i] = "%".$val."%";
$i++;
}
$query = rtrim($query, " AND ");
$tubas = R::convertToBeans("tuba", R::getAll("SELECT * FROM tuba WHERE ".$query, $vals));
Это, кажется, работает в моем предварительном тестировании, но это лучший способ сделать это? Будет ли безопасно использовать SQL-инъекцию? Спасибо!
RedBean действительно использует PDO. Я рассмотрю PDO UTF-7. Спасибо, что бросил мне кое-какие знания! Это намного чище. –
@Dave np, рад помочь. Протестировано redbean некоторое время назад, это интересно :) – JimL
Я копаю. Отлично подходит для быстрого развития. –