Здравствуйте! Пишу поиск по базе данных с помощью оператора LIKE. Не могу понять где я ошибся, выборку делаю через PDO. В PHP я начинающий, возможно я не так понял синтаксис:
$name = "%$name%"; $stm = $pdo->prepare("SELECT * FROM table WHERE name LIKE ?"); $stm->execute(array($name)); $data = $stm->fetchAll();
Не совсем ясно значение "%" и "?". % - подразумеваю, чтобы запрос искался, как часть слова. А "?", возможно, переменная.
Выборку делаю таким образом:
$search = trim($search);$search = stripcslashes($search);$search = htmlspecialchars($search);$sql = 'SELECT * FROM female_articles WHERE title OR text LIKE :search';$data = $pdo->prepare($sql);$data->bindValue (':search', $search);$data->execute();$row = $data->fetch();
Весь код обработчика:
<?php $root = $_SERVER['DOCUMENT_ROOT']; include ($root . "/blocks/gb_tw_mag.php"); if (isset($_POST['search'])) { $search = $_POST['search']; } if (isset($_POST['search_select'])) { $search_select = $_POST['search_select']; } if (isset($_POST['search_submit'])) { $search_submit = $_POST['search_submit']; }?><!doctype html><html><head><meta charset="utf-8"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="description" content="Журнал о стиле и образе жизни"><meta name="keywords" content="Журнал, мужской журнал, женский журнал, интернет-журнал"><title>Torawhite.ru - Store & Magazine | Журнал | Результаты поиска</title> <?php include ($root . "/blocks/favicon.php"); ?><!--Таблицы стилей--><link rel="stylesheet" type="text/css" href="http://www.torawhite.ru/css/reset.css"><link rel="stylesheet" type="text/css" href="http://www.torawhite.ru/css/input_reset.css"><link rel="stylesheet" type="text/css" href="http://www.torawhite.ru/css/main.css"><link rel="stylesheet" type="text/css" href="http://www.torawhite.ru/css/fonts.css"><link rel="stylesheet" type="text/css" href="http://www.torawhite.ru/css/header.css"><link rel="stylesheet" type="text/css" href="http://www.torawhite.ru/magazine/magazine_css/magazine_left_sidebar.css"><link rel="stylesheet" type="text/css" href="http://www.torawhite.ru/magazine/magazine_css/article_block.css"><link rel="stylesheet" type="text/css" href="http://www.torawhite.ru/magazine/magazine_css/magazine_right_sidebar.css"><link rel="stylesheet" type="text/css" href="http://www.torawhite.ru/magazine/magazine_css/top_nav_magazine.css"><link rel="stylesheet" type="text/css" href="http://www.torawhite.ru/css/bottom_nav.css"><link rel="stylesheet" type="text/css" href="http://www.torawhite.ru/css/footer.css"> <?php include ($root . "/magazine/magazine_blocks/magazine_scripts_head.php"); ?></head><body> <div class="wrapper"> <?php include ($root . "/blocks/header.php"); include ($root . "/magazine/magazine_blocks/top_nav_magazine.php"); ?> <div class="magazine_container"> <?php include ($root . "/magazine/magazine_blocks/magazine_left_sidebar.php"); ?> <div class='article_block_box'> <?php if (isset($search_submit) AND $search_select == 'all') { if (empty($search) or strlen($search) < 4) { echo "<div class='search_title_attention'>Поисковый запрос не введён, либо он менее 4-х символов!</div>"; } else { $search = trim($search); $search = stripcslashes($search); $search = htmlspecialchars($search); $sql = 'SELECT * FROM female_articles WHERE title OR text LIKE :search'; $data = $pdo->prepare($sql); $data->bindValue (':search', $search); $data->execute(); $row = $data->fetch(); if ($data->rowCount() > 0) { while ($row = $data->fetch()) { if ($row["cat"] == 1) { $catb = 'Стиль'; $cat_link = 'http://torawhite.ru/magazine/male_articles/style/'; } elseif ($row["cat"] == 2) { $catb = 'Спорт'; $cat_link = 'http://torawhite.ru/magazine/male_articles/sport/'; } elseif ($row["cat"] == 3) { $catb = 'Питание'; $cat_link = 'http://torawhite.ru/magazine/male_articles/diet/'; } else { $catb = 'Бизнес'; $cat_link = 'http://torawhite.ru/magazine/male_articles/business/'; } printf(" <div class='article_block'> <div class='cover_img'><a href='$cat_link' target='_self' title='Перейти в рубрику'>$catb</a></div> <a href='view_article.php?id=%s' target='_self' title='%s'><img src='%s' width='640'></a> <div class='article_block_name'> <p><a href='view_article.php?id=%s' target='_self'>%s</a></p> </div> <ul class='article_block_date'> <li> %s | </li> </ul> <ul class='article_block_author'> <li> <a href='%s' target='_self'>%s</a> </li> </ul> <ul class='article_block_eye_box'> <li> <img src='http://www.torawhite.ru/images/eye.svg' align='middle'> %s </li> </ul> <div class='article_block_text'> %s </div> <div class='article_block_full_story'> <a href='view_article.php?id=%s' target='_self'>Читать полностью</a> </div> </div>", $row["id"], $row["title"], $row["article_img"], $row["id"], $row["title"], $row["article_date"], $row["author_link"], $row["author"], $row["view"], $row["description"], $row["id"]); } } else { echo "<div class='search_title'>По Вашему запросу статей не найдено</div>"; } } } else { echo "<div class='search_title_attention'>Вы обратились к файлу без необходимых параметров!</div>"; } ?> </div> <?php include ($root . "/magazine/magazine_blocks/magazine_right_sidebar.php"); ?> <div class="clear"></div> </div> <?php include ($root . "/blocks/bottom_nav.php"); include ($root . "/blocks/footer.php"); ?> </div><?php include ($root . "/blocks/scripts_body.php");?></body></html>
В итоге мне сразу выдаёт:
else { echo "<div class='search_title'>По Вашему запросу статей не найдено</div>"; }
Хотя текст запроса в базе имеется точно! Прошу Вас помочь разобраться.
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Здравствуйте, подскажите какой тег использовать для увеличения значения, пример на картинке.
Вроде, про такой тег я слышала. Если есть тег прогресс бар, значит и такое должно быть.
Question
Torawhite
Здравствуйте! Пишу поиск по базе данных с помощью оператора LIKE. Не могу понять где я ошибся, выборку делаю через PDO. В PHP я начинающий, возможно я не так понял синтаксис:
Не совсем ясно значение "%" и "?". % - подразумеваю, чтобы запрос искался, как часть слова. А "?", возможно, переменная.
Выборку делаю таким образом:
Весь код обработчика:
В итоге мне сразу выдаёт:
Хотя текст запроса в базе имеется точно! Прошу Вас помочь разобраться.
Link to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.