Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php搜索框结果显示不正确?_Php_Mysql - Fatal编程技术网

php搜索框结果显示不正确?

php搜索框结果显示不正确?,php,mysql,Php,Mysql,我试图使用以下代码创建一个php搜索框,但当我按submit时,它会在wallname中显示所有三个条目,而不是与搜索相关的条目 php: 如果设置了$\u POST['submit-search']{ $searchq=$_POST['search-input']; $query=mysqli\u query$conn,从walldb中选择wallname,其中 类似“%$searchq%”的墙名; $result=mysqli\u num\u rows$query; 如果$result=0{

我试图使用以下代码创建一个php搜索框,但当我按submit时,它会在wallname中显示所有三个条目,而不是与搜索相关的条目

php:

如果设置了$\u POST['submit-search']{ $searchq=$_POST['search-input']; $query=mysqli\u query$conn,从walldb中选择wallname,其中 类似“%$searchq%”的墙名; $result=mysqli\u num\u rows$query; 如果$result=0{ 回波错误搜索; }否则{ 而$row=mysqli\u fetch\u assoc$query{ $name=$row['wallname']; $output=.$name。; 打印$输出; } } } html:


由于有很多关于使用准备好的语句和PDO的评论,下面给出了使用PDO的解决方案:

了解更多关于PDO的信息

$dsn=mysql:host=YOUR\u mysql\u host;dbname=您的_数据库_名称;字符集=utf8mb4; $options=[ PDO::ATTR_EMULATE_PREPARES=>false,//关闭实际准备语句的模拟模式 PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,//打开异常形式的错误 PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC,//将默认的FETCH设置为关联数组 ]; 试一试{ $pdo=新pdo$dsn、用户名、密码、$options; }捕获异常$e{ 错误\u日志$e->getMessage; 退出“无法连接到数据库”; } $arr=[]; $searchq=%{$\u POST['search-input']}%; $stmt=$pdo->prepareSelectwallname fromwalldb WHERE wallname LIKE?; $stmt->execute[$searchq]; 而$row=$stmt->fetchPDO::FETCH_ASSOC{ $arr[]=$row; } 如果$arr出口“未找到结果”; 打印费用$arr; 额外阅读:关于使用PDO防止SQL注入


顺便问一下,Searchq的价值是什么?如果您想让精确匹配在搜索查询中省略%符号,或使用where wallname={$searchq}。我尝试了haystack、iceland和road,但仍然显示相同的结果。您都可以接受SQL注入。运行此代码不安全。用post变量重写该行,如下所示:$myvar=mysql\u real\u escape\u string$\u post[which];哦,是的,我忘了。谢谢你!仍然不起作用tho:我想强调的另一个侧记是if$result=0{这一部分。它应该是if$result==0{。这给了我一个页面重新加载时所有值的数组,搜索任何内容对我来说都不起作用,因为某种原因,我让它起作用了!这是一个冲突的javascript。感谢提供信息的答案:
 <form action= "" method= "post">
        <button type= "submit" name="submit-search">Search</button>
        <input id="search" name="search-input" type="text" placeholder="Search By Name" 
        autocomplete="off"><a href="#"><img id="cancle" src="/images/cancle.png"></a>
 </form>
win7-haystack
win10-iceland
win10-road