Juchi2011
Новичок
Здравствуйте, уважаемые форумчане!
Помогите, пожалуйста, новичку в решении задачи.
Метод fetchAll(); не работает, если есть проценты (%) в условии:
Если процентов (%) нет, т. е. $sl = $_POST['sl'];, то всё работает.
Как сделать, чтобы работало при условии $sl = '%' . $_POST['sl'] . '%';.
Помогите, пожалуйста, новичку в решении задачи.
Метод fetchAll(); не работает, если есть проценты (%) в условии:
PHP:
$sl = '%' . $_POST['sl'] . '%';
$sql = 'SELECT id, login, email, date FROM users WHERE login LIKE :login';
$s = $pdo->prepare($sql);
$s->bindValue(':login', $sl);
$s->execute();
Как сделать, чтобы работало при условии $sl = '%' . $_POST['sl'] . '%';.
PHP:
// HTML шаблон
// search.php
<form name="searchform" action="" method="post">
<div>
<label for="sl">Поиск по логину:</label>
<input type="text" name="sl" placeholder="Поиск" value="">
<input type="submit" name="searchlogin" value="Найти">
</div>
</form>
// HTML шаблон
// srch.php
<?php foreach ($sch as $user): ?>
<div>
<form action="" method="post">
<div>
<?php echo htmlspecialchars($user['id'], ENT_QUOTES, 'UTF-8'); ?>
<?php echo htmlspecialchars($user['login'], ENT_QUOTES, 'UTF-8'); ?>
<?php echo htmlspecialchars($user['email'], ENT_QUOTES, 'UTF-8'); ?>
<?php echo htmlspecialchars($user['date'], ENT_QUOTES, 'UTF-8'); ?>
<input type="hidden" name="id" value="<?php echo htmlspecialchars($user['id']); ?>">
<input type="submit" name="action" value="Редактировать">
<input type="submit" name="action" value="Изменить пароль">
<input type="submit" name="action" value="Удалить">
</div>
</form>
</div>
<?php endforeach; ?>
<p><a href="#" onclick="history.back();">Вернуться на предыдущую страницу</a></p>
// PHP контроллёр
// search.php
<?php
include $_SERVER['DOCUMENT_ROOT'] . '/ws/story/scripts/dbconnect.php'; // Подключение к базе данных.
if (isset($_POST['searchlogin']))
{
if (htmlspecialchars($_POST['sl'], ENT_QUOTES, 'UTF-8') == '')
{
$output = 'Заполните поле и повторите поиск.';
include $_SERVER['DOCUMENT_ROOT'] . '/ws/story/html/output.php';
exit();
}
try
{
$sl = '%' . $_POST['sl'] . '%';
$sql = 'SELECT id, login, email, date FROM users WHERE login LIKE :login';
$s = $pdo->prepare($sql);
$s->bindValue(':login', $sl);
$s->execute();
}
catch (PDOException $e)
{
$error = 'Ошибка при извлечении данных.';
// $error = 'Ошибка при извлечении данных: ' . $e->getMessage();
include $_SERVER['DOCUMENT_ROOT'] . '/ws/story/html/error.php';
exit();
}
foreach ($s as $row)
{
$sch[] = array('id' => $row['id'], 'login' => $row['login'], 'email' => $row['email'], 'date' => $row['date']);
}
include $_SERVER['DOCUMENT_ROOT'] . '/ws/story/html/srch.php';
exit();
/*
Код, который не работает.
Хочу в подключаемом шаблоне output.php вывести сообщение "Такого логина нет в базе данных.".
Но метод fetchAll(); не работает.
Не могу понять, как вывести сообщение при отрицательном результате.
$lv = $s->fetchAll();
if (count($lv) == 0)
{
$output = 'Такого логина нет в базе данных.';
include $_SERVER['DOCUMENT_ROOT'] . '/ws/story/html/output.php';
exit();
}
*/
}
include $_SERVER['DOCUMENT_ROOT'] . '/ws/story/html/search.php';
?>
Последнее редактирование модератором: