Здравствуйте! Пишу поиск по базе данных с помощью оператора LIKE. Не могу понять где я ошибся, выборку делаю через PDO. В PHP я начинающий, возможно я не так понял синтаксис:
Quote
$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><metacharset="utf-8"><metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"><metaname="description"content="Журнал о стиле и образе жизни"><metaname="keywords"content="Журнал, мужской журнал, женский журнал, интернет-журнал"><title>Torawhite.ru - Store & Magazine | Журнал | Результаты поиска</title><?php include ($root ."/blocks/favicon.php");?><!--Таблицы стилей--><linkrel="stylesheet"type="text/css"href="http://www.torawhite.ru/css/reset.css"><linkrel="stylesheet"type="text/css"href="http://www.torawhite.ru/css/input_reset.css"><linkrel="stylesheet"type="text/css"href="http://www.torawhite.ru/css/main.css"><linkrel="stylesheet"type="text/css"href="http://www.torawhite.ru/css/fonts.css"><linkrel="stylesheet"type="text/css"href="http://www.torawhite.ru/css/header.css"><linkrel="stylesheet"type="text/css"href="http://www.torawhite.ru/magazine/magazine_css/magazine_left_sidebar.css"><linkrel="stylesheet"type="text/css"href="http://www.torawhite.ru/magazine/magazine_css/article_block.css"><linkrel="stylesheet"type="text/css"href="http://www.torawhite.ru/magazine/magazine_css/magazine_right_sidebar.css"><linkrel="stylesheet"type="text/css"href="http://www.torawhite.ru/magazine/magazine_css/top_nav_magazine.css"><linkrel="stylesheet"type="text/css"href="http://www.torawhite.ru/css/bottom_nav.css"><linkrel="stylesheet"type="text/css"href="http://www.torawhite.ru/css/footer.css"><?php include ($root ."/magazine/magazine_blocks/magazine_scripts_head.php");?></head><body><divclass="wrapper"><?php include ($root ."/blocks/header.php"); include ($root ."/magazine/magazine_blocks/top_nav_magazine.php");?><divclass="magazine_container"><?php include ($root ."/magazine/magazine_blocks/magazine_left_sidebar.php");?><divclass='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");?><divclass="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.
Актуальные контакты:
Telegram: @Nikker_web
E-Mail: tarasevich.email@gmail.com
Портфолио https://www.behance.net/d4d4186e
Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ
Актуальные контакты:
Telegram: @Nikker_web
E-Mail: tarasevich.email@gmail.com
Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ
Портфолио https://www.behance.net/d4d4186e
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.