新手请教模糊查询怎样防止sql注入

php中文网
发布: 2016-06-23 14:03:05
原创
1039人浏览过

//创建表模型
$news_table=new news();
//创建相应的适配器
$db=$news_table->getAdapter();
//准备好sql语句
$sql=$db->quoteInto("select title,pubDate from news where title like '%$keyword_arr[0]%'");
//获取结果集
$res=$db->query($sql)->fetchAll();
我需要模糊查询,有意要带%号,而且里面还有变量名$号,数组的下标运算符[]号,但又要防止别人用%之类的这些东西来Sql注入,这句话该怎么写啊??

蓝心千询
蓝心千询

蓝心千询是vivo推出的一个多功能AI智能助手

蓝心千询 34
查看详情 蓝心千询

回复讨论(解决方案)

加一个 mysql_real_escape_string();
不过mysql_real_escape_string不转义 % 和 _ 所以可以先 str_replace(),去掉不想要的符号。

这句Sql可以帮忙写出来给我试下不
我是菜鸟啊

这句sql能查询出结果,但是在我的错误日志文件里记录了1个错误和1个警告
PHP Warning:  Missing argument 2 for Zend_Db_Adapter_Abstract::quoteInto(),
called in E:\myenv\Apache\htdocs\news\application\controllers\NewsqueryController.php on line 44 and defined in E:\myenv\Apache\htdocs\news\library\Zend\Db\Adapter\Abstract.php on line 927

PHP Notice:  Undefined variable: value in 
E:\myenv\Apache\htdocs\news\library\Zend\Db\Adapter\Abstract.php 
on line 930
不晓得哪里有问题

1、Abstract.php 927 行的 end_Db_Adapter_Abstract::quoteInto() 函数丢失了参数2,即你少传了一个参数
2、PHP Notice:  Undefined variable: value 
$value 没有定义,在 Abstract.php 930 行
 

%怎么实现这个注入的?

我也想知道,应该是要对参数进行过滤,发现要过滤的字符,就强制退出或者替换掉。

mysql_real_escape_string

mysql_escape_string

有什么分别??

$db-> quoteInto("select title,pubDate from news where title like '%$keyword_arr[0]%'");
方法 quoteInto 需要有两个参数

to #7
后者已列入过时系列

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号