php select和json编码问题
我正在建立一个网站来学习
PHP,并且正在从Jquery Ui进行自动提交.
这是我的代码(我很久以前从SO上的帖子中获取了这些代码,而且我不是100%它的功能,所以如果有人可以解释,那将会有所帮助!)这段代码来自suggest.php,我从我的jquery代码调用(我认为它正在工作,所以我没有发布它,但如果你需要它可以!) <? include("config.php"); $queryString = strtolower($_GET["q"]); $return = array(); $query = mysql_query("SELECT name FROM company WHERE name LIKE '$queryString%' UNION SELECT cat FROM cat WHERE cat LIKE '$queryString%' UNION SELECT subcat FROM subcat WHERE subcat LIKE '$queryString%' LIMIT 10"); while ($row = mysql_fetch_array($query)) { array_push($return,array('label'=>$row['name'],'value'=>$row['name'])); } echo(json_encode($return)); ?> 现在这是使autosuggest工作,但只有相同的结果(例如,如果我键入“Johns”它提出“约翰热狗”作为建议,但如果我键入“fjfjdjf669959”然后它出现“约翰斯热狗“也是. 我正在做一个Mysql Union,因为我试图使用公司表中的名称行,来自cat表的cat行和来自subcat表的subcat行来填充我的autosuggest. 为什么这不起作用? 感谢您的帮助! 我的JQUERy代码如下所示: <script> $(function() { $( "#search" ).autocomplete({ source: "suggest.php" }); }); </script> 解决方法
首先,你的PHP代码容易受到
SQL injection attacks的影响.此外,mysql_* functions are deprecated.相反,使用
PDO.
您的代码失败是因为您正在读取错误的查询变量. $_GET [‘q’]为空,因为jQuery UI autocomplete plugin使用参数term作为搜索查询.使用空的$queryString,您可以执行SQL查询 SELECT name FROM company WHERE name LIKE '%' -- UNION ... 这当然只是返回一切.你要: <?php include("config.php"); $db = new PDO('mysql:host=localhost;dbname=database','user','password'); $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); if (!isset($_GET['term'])) { header('HTTP/1.0 400 Bad Request'); echo 'Missing term parameter in request'; exit(); } $queryString = strtolower($_GET["term"]); $query = $db->prepare("SELECT name FROM company WHERE name LIKE :qs" . " UNION SELECT cat AS name FROM cat WHERE cat LIKE :qs" . " UNION SELECT subcat AS name FROM subcat WHERE subcat LIKE :qs " . " LIMIT 10"); $query->execute(array(':qs' => $queryString . '%')); $query->setFetchMode(PDO::FETCH_NAMED); $result = array_map(function($row) { return array('label'=>$row['name'],'value'=>$row['name']); },$query->fetchAll()); header('Content-Type: application/json'); echo(json_encode($result)); Here is a live,downloadable (incl. database) demo. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 雷林鹏分享:PHP 多维数组
- php切换到mysqli:num_rows问题
- php – 使用ImageMagick生成图像而不保存到文件但仍显示在网
- 服务器和本地时间的PHP或Javascript日期和时间代码
- [php]Windows环境下Composer的安装教程
- php类中的$this,static,final,const,self这几个关键字使
- php usort() 通过用户自定义的比较函数对数组进行排序
- php – 想要使用cURL而不是SimpleXML_load_file()
- 将IP地址转换为整型数字的PHP方法、Asp方法和MsSQL方法、My
- 关于php curl获取301或302转向的网址问题的解决方法