Поисковый запрос 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));
        ?>
Author: Niek, 2017-11-23

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