Поисковый запрос SQL на PHP не работает
Может кто-нибудь объяснить, почему это не работает? Я думаю, что эта часть неверна, но я не знаю, как это исправить.
$stmt = $pdo->prepare("SELECT * FROM locatie WHERE gebouw LIKE '%?%'
AND ruimte LIKE '%?%'");
$stmt->execute(array($gebouw_zoeken, $ruimte_zoeken));
Проблема в том, что он не показывает результат запроса. Также нет никаких кодов ошибок.
<table>
<form action="index.php" method="post">
Locatie zoeken:<br>
<input placeholder="Gebouwnaam" type="text" name="gebouw_zoeken"
>
<br>
<input placeholder="Ruimtenaam" type="text" name="ruimte_zoeken"
>
<br><br>
<input type="submit" name="submit_zoeken" value="Locatie
zoeken" ><br>
</form>
</table><br><br>
<?php
if (isset($_POST["submit_zoeken"])) {
$gebouw_zoeken = $_POST["gebouw_zoeken"];
$ruimte_zoeken = $_POST["ruimte_zoeken"];
$stmt = $pdo->prepare("SELECT * FROM locatie WHERE gebouw LIKE '%?%'
AND ruimte LIKE '%?%'");
$stmt->execute(array($gebouw_zoeken, $ruimte_zoeken));
?>
3
3 answers
Вам нужно удалить кавычки и поместить %
вокруг строк, которые вы связываете в операторе execute()
:
$stmt = $pdo->prepare("SELECT * FROM locatie WHERE gebouw LIKE ?
AND ruimte LIKE ?");
$stmt->execute(array('%' . $gebouw_zoeken . '%', '%' . $ruimte_zoeken . '%'));
3
Author: jeroen, 2017-11-23 12:02:55
Вы действительно объявили переменную для хранения информации массива после ее выполнения?
$data = $stmt->fetchAll();
print_r($data);
1
Author: Conor Reid, 2017-11-23 12:03:21
Я думаю, что проблема с параметром привязки как
$Stmt = $pdo->prepare("SELECT * FROM locatie WHERE gebouw LIKE '%?%'
AND ruimte LIKE '%?%'");
$stmt->bind_parm("ii",$gebouw_zoeken, $ruimte_zoeken);
$stmt->execute();
Ссылка: http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
-2
Author: Naresh Teli, 2017-11-23 12:39:03