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
));
Я нашел проблему. По какой-то причине он не имеет ничего общего с подготовленным оператором. Значения, установленные в раскрывающемся поле опций в форме поиска, задают только имя клиента до пробела, а не после него. Теперь я должен выяснить, почему это происходит.
Благодарю вас