Я тут наговнокодил, но выдаёт ошибку:
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 ?>
Правильный подход:
// подготавливаем запрос к выполнению
$stmt = $db->prepare('SELECT * FROM articles WHERE title LIKE ? OR text LIKE ?');
// выполняем
$stmt->execute(['%' . $termin . '%', '%' . $termin . '%']);
такой вариант, судя по всему, тоже подойдет
$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);
чтобы он мог сообщать об ошибках запроса
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть файл JS, в котором передаётся id продукта в обработчик PHPСам обработчик возвращает или 'success' или 'error'
столкнулся с проблемой, не могу отредактировать код, чтобы он работал через php-snippet