Я пытаюсь использовать это для базового поиска с нумерацией страниц:
$construct = '? AND ? AND..';
$query = $database->prepare('SELECT * FROM something WHERE something LIKE ' . $construct . ' LIMIT :offset, :results');
Единственная причина, по которой я их смешиваю, заключается в том, что неназванные параметры не могут иметь значения int из-за ошибки в PHP: https://bugs.php.net/bug.php?id=44639
Однако, если я не смешиваю их, как я могу искать переменное количество терминов, используя привязки?
Обновление
После того, как я возился с этим, я решил более или менее, используя именованные параметры и некоторые циклы:
// build prepared statement
$construct = '';
for ($x = 0; $x <= $searchArrayCount; $x++) {
$construct .= ($x < $searchArrayCount)
? ":var$x OR name LIKE "
: ":var$x LIMIT :start, :perPage";
}
$query = $database->prepare('SELECT something FROM something WHERE name LIKE ' . $construct);
// bind parameters
for ($x = 0; $x <= $searchArrayCount; $x++) {
$searchArray[$x] = "%$searchArray[$x]%";
$query->bindParam(":var$x", $searchArray[$x]);
}
$query->bindParam(':start', $searchArrayCount, PDO::PARAM_INT);
$query->bindParam(':perPage', $perPage, PDO::PARAM_INT);
Если есть более оптимальный способ сделать это, я бы хотел, чтобы об этом сообщили.