Полнотекстовый поиск sqlite3 PDO не выходит…

127
01 августа 2019, 21:20

Я тут наговнокодил, но выдаёт ошибку:

Fatal error: Call to a member function execute() on boolean in /site.org/index.php on line 19

Вот моё поделие:

<?php
    $db = new PDO('sqlite:data.db');
    $termin = $_GET['termin'];
    $stmt = $db->query('SELECT * FROM articles WHERE title LIKE %$termin% OR text LIKE %$termin%');
    $stmt->execute();
    $result = $stmt->fetchAll();
?>
<form action="post">
    <input type="text" name="termin" />
    <input type="submit" name="submit" />
</form>
<?php if (empty($termin)): ?>
    <p>Missing term!</p>
<?php elseif (strlen($termin) < 3): ?>
    <p>The term must be at least 3 characters!</p>
<?php elseif ($result < 1): ?>
    <p><?= $termin ?> not found.</p>
<?php else: ?>
    <?php foreach ($result as $row): ?>
        <p>ID: <?= $row['id'] ?></p>
        <p>Date: <?= $row['date'] ?></p>
        <p>Title: <?= $row['title'] ?></p>
        <p>Text: <?= $row['text'] ?></p>
        <p><a href="?id=<?= $row['id'] ?>">More…</a></p>
        <br />
    <?php endforeach ?>
<?php endif ?>
Answer 1

Правильный подход:

// подготавливаем запрос к выполнению
$stmt = $db->prepare('SELECT * FROM articles WHERE title LIKE ? OR text LIKE ?');
// выполняем
$stmt->execute(['%' . $termin . '%', '%' . $termin . '%']);
Answer 2

такой вариант, судя по всему, тоже подойдет

$termin = $_GET['termin'];
$sql = 'SELECT * FROM articles WHERE title LIKE :termin OR text LIKE :termin';
$stmt = $db->prepare($sql);
$stmt->execute(['termin' => "%$termin%"]);
$result = $stmt->fetchAll();

Кроме этого, важно стартовать PDO вот таким кодом

$options = array(
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
);
$db = new PDO('sqlite:data.db', null, null, $options);

чтобы он мог сообщать об ошибках запроса

READ ALSO
Вызвать js сообщение по условию

Вызвать js сообщение по условию

Есть файл JS, в котором передаётся id продукта в обработчик PHPСам обработчик возвращает или 'success' или 'error'

108
Как добавить в архив файл по ссылке?

Как добавить в архив файл по ссылке?

Хочу сделать что-то вроде этого:

113
Как отредактировать код?

Как отредактировать код?

столкнулся с проблемой, не могу отредактировать код, чтобы он работал через php-snippet

129