Обучение/Помощь новичкам | Помогите с php > 7
$data = $connect->prepare("select * from `users` where `login` rlike :keywords or `name` rlike :keywords or `wmr` rlike :adm or `email` rlike :adm order by `rating` desc limit :start, 12");
$data->bindValue(':keywords', $keywords);
$data->bindValue(':adm', ($adm_id == 1 || $adm_id == 5) ? $keywords : RS_ALL_CHARS);
$data->bindValue(':start', $page->start, PDO::PARAM_INT);
$data->execute();
$sql = $data->fetchAll();
foreach ($sql as $row) {
echo '<div class="user-forlink">'.profileLink($row).'<div class="chi">'.rankUser($row['rating']).'</div><span class="online">'.online($row['id']).'</span></div>';
}
$page->navigation();
} Мне нужно чтобы отображался список все у кого в таблице users
'ref' = '0'
<?php
$data = $connect->prepare("SELECT * FROM `users` WHERE `ref` = :ref AND (`login` rlike :keywords OR `name` rlike :keywords OR `wmr` rlike :adm OR`email` rlike :adm) ORDER BY `rating` DESC LIMIT :start, 12");
$data->bindValue(':ref', 0);
$data->bindValue(':keywords', $keywords);
$data->bindValue(':adm', ($adm_id == 1 || $adm_id == 5) ? $keywords : RS_ALL_CHARS);
$data->bindValue(':start', $page->start, PDO::PARAM_INT);
$data->execute();
$sql = $data->fetchAll();
foreach ($sql as $row) {
echo '<div class="user-forlink">'.profileLink($row).'<div class="chi">'.rankUser($row['rating']).'</div><span class="online">'.online($row['id']).'</span></div>';
}
$page->navigation();
}
?> Собственно в SQL запрос после WHERE добавляешь `ref` = :ref AND ( и перед ORDER BY `rating` добавляешь ) ну и перед $data->bindValue(':keywords', $keywords); добавляешь $data->bindValue(':ref', 0);
________
посл. ред. 07.02.2019 в 00:01; всего 1 раз(а); by null
Есть такой случай, что :keywords придется прописать столько раз, сколько он указан в запросе, ну это другая история
________
посл. ред. 07.02.2019 в 00:18; всего 1 раз(а); by Avenax
________
посл. ред. 07.02.2019 в 00:18; всего 1 раз(а); by Avenax
Avenax , Странно, биндинг же по имени идет а не по ? думаю дефолт биндинг одного параметра по имени должен корректно работать, он хотел лишь добавить проверку еще одну что бы ref равнялся нулю
null , сейчас не дома, так бы нашёл запрос (наверно нет, на старом ssd), вроде ATTR_EMULATE_PREPARES, точно сейчас не вспомню, вообщем была ругань с синтаксисом на то, что плейсхолдеров больше, чем параметров, давно это было, уже не вспомню
Avenax , Мб конфликт драйвера был? Там же вроде не все драйверы могут подготавливать запросы.
null , все может быть, уже не вспомню, но в голове отложилось, что сколько маркеров, столько атрибутов
null (06.02.2019 в 23:59)
Собственно в SQL запрос после WHERE добавляешь `ref` = :ref AND ( и перед ORDER BY `rating` добавляешь ) ну и перед $data->bindValue(':keywords', $keywords); добавляешь $data->bindValue(':ref', 0);
<?php
$data = $connect->prepare("SELECT * FROM `users` WHERE `ref` = :ref AND (`login` rlike :keywords OR `name` rlike :keywords OR `wmr` rlike :adm OR`email` rlike :adm) ORDER BY `rating` DESC LIMIT :start, 12");
$data->bindValue(':ref', 0);
$data->bindValue(':keywords', $keywords);
$data->bindValue(':adm', ($adm_id == 1 || $adm_id == 5) ? $keywords : RS_ALL_CHARS);
$data->bindValue(':start', $page->start, PDO::PARAM_INT);
$data->execute();
$sql = $data->fetchAll();
foreach ($sql as $row) {
echo '<div class="user-forlink">'.profileLink($row).'<div class="chi">'.rankUser($row['rating']).'</div><span class="online">'.online($row['id']).'</span></div>';
}
$page->navigation();
}
?> Собственно в SQL запрос после WHERE добавляешь `ref` = :ref AND ( и перед ORDER BY `rating` добавляешь ) ну и перед $data->bindValue(':keywords', $keywords); добавляешь $data->bindValue(':ref', 0);
Не работает... Чистая страница
null , вот код всей страницы
<?php
$title = 'Пользователи';
require_once($_SERVER["DOCUMENT_ROOT"]."/inc/head.php");
if (isset($active)) {
echo '<div class="title">Пользователи</div>
<div class="menu">
<form action="" method="GET">
<input type="text" name="search" value="'.$search.'">
<input type="submit" value="Поиск">
</form></div>';
$keywords = $search ? preg_replace("/[\s,]+/", "|", $search) : RS_ALL_CHARS;
$stmt_num = $connect->prepare("select count(*) from `users` where `login` rlike :keywords or `name` rlike :keywords or `wmr` rlike :adm or `email` rlike :adm");
$stmt_num->bindValue(':keywords', $keywords);
$stmt_num->bindValue(':adm', ($adm_id == 1 || $adm_id == 5) ? $keywords : RS_ALL_CHARS);
$stmt_num->execute();
$count_res = $stmt_num->fetchColumn();
if ($count_res == 0) {
echo '<div class="menu">NONE</div>';
} else {
$page = new Pagination($count_res, 12);
if ($search) {
$page->setLink('?search=' . $search . '&');
echo '<div class="menu">Найдено по запросу: '.$count_res.'</div>';
}
$data = $connect->prepare("select * from `users` where `login` rlike :keywords or `name` rlike :keywords or `wmr` rlike :adm or `email` rlike :adm order by `rating` desc limit :start, 12");
$data->bindValue(':keywords', $keywords);
$data->bindValue(':adm', ($adm_id == 1 || $adm_id == 5) ? $keywords : RS_ALL_CHARS);
$data->bindValue(':start', $page->start, PDO::PARAM_INT);
$data->execute();
$sql = $data->fetchAll();
foreach ($sql as $row) {
echo '<div class="user-forlink">'.profileLink($row).'<div class="chi">'.rankUser($row['rating']).'</div><span class="online">'.online($row['id']).'</span></div>';
}
$page->navigation();
}
require($_SERVER["DOCUMENT_ROOT"]."/inc/qqq.php");
} else {
header('Location: /');
}
require($_SERVER["DOCUMENT_ROOT"]."/inc/foot.php");
?>
Всем спасибо уже решил вопрос!
Стр.: 1, 2