Ошибка при попытке заставить работать PDO

Это работает, я вставляю код из того, что отображается в print_r в оператор execute, и все в порядке.

$search_items = array();
for ($x = 0; $x < $search_parts_count; $x++) {
$search_items[] = "':search$x' => '%$search_parts[$x]%'";
}
print_r(implode(",", $search_items));

$stmt->execute(array(':search0' => '%cure%',':search1' => '%cancer%',':search2' => '%help%',':search3' => '%ongoing%'));

но когда я делаю это:

$stmt->execute($search_items);

Я получил:

Неопределенное исключение «PDOException» с сообщением «SQLSTATE [HY093]: недопустимый номер параметра: число связанных переменных не соответствует количеству токенов»

Понятия не имею, что я делаю не так. Любая помощь будет принята с благодарностью!

Вот утверждение:

$sql_string = 'SELECT area, file_name, title FROM meta_details WHERE' . $search_guts;
$stmt = $conn->prepare($sql_string);

и это строится так:

$search_guts = '(';

for ($x = 0; $x < $search_parts_count; $x++) {
$search_guts .= 'title LIKE :search' . $x;
if ($search_parts_count - 1 != $x){$search_guts .= ' OR ';}
};

$search_guts .= ') OR (';

for ($x = 0; $x < $search_parts_count; $x++) {
$search_guts .= 'description LIKE :search' . $x;
if ($search_parts_count - 1 != $x){$search_guts .= ' OR ';}
};
$search_guts .= ')';

Спасибо!

0

Решение

При строительстве $search_items

$search_items[] = "':search$x' => '%$search_parts[$x]%'";

Вы создаете предмет со стоимостью "':search$x' => '%$search_parts[$x]%'" а не запись для :search$x, Вы должны настроить как …

$search_items[":search$x"] = "%{$search_parts[$x]}%";
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector