PHP PDO подготовил операторы синтаксических проблем

Я пытаюсь использовать подготовленные заявления с использованием PDO в PHP. Кажется, работает нормально, пока я не попытаюсь вернуть имя с пробелами.

Например, я могу вернуть имя типа Apple без проблем, но не могу вернуть результаты для Packard Bell, Hewlett Packard и т. Д.

Я тестировал несколько разных имен, и когда я жестко программирую в Packard Bell или Hewlett Packard, запрос возвращает результаты, как и ожидалось.

Вот запрос с подготовленным оператором, который я использую.

$stmt = $conn->prepare('SELECT * FROM job WHERE client_name = :customer ORDER BY job_date DESC');
$stmt->execute(array(
    'customer' => $customer,
));

Когда я запрашиваю имена с пробелами, я не получаю никаких ошибок, как обычно, меня перенаправляют на страницу результатов. Проблема в том, что страница результатов пуста, хотя в базе данных есть строки. Есть ли что-то, что я должен сделать с кавычками или цитатами, чтобы исправить это.

Благодарю вас

2 ответа

В то время как client_name является ': customer', вы должны выполнить с массивом ':customer' => $customer

$stmt = $conn->prepare('SELECT * FROM job WHERE client_name = :customer ORDER BY job_date DESC');
$stmt->execute(array(
    ':customer' => $customer
));

Ссылка: http://www.php.net/manual/en/pdo.prepare.php

Я нашел проблему. По какой-то причине он не имеет ничего общего с подготовленным оператором. Значения, установленные в раскрывающемся поле опций в форме поиска, задают только имя клиента до пробела, а не после него. Теперь я должен выяснить, почему это происходит.

Благодарю вас

Другие вопросы по тегам