Php Regex查找string是否为mysql select语句
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Php Regex查找string是否为mysql select语句,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1620字,纯文字阅读大概需要3分钟。
内容图文
我正在尝试在执行它们之前验证查询,如果查询不是mysql select语句,那么我必须向用户显示消息.
我从这个链接找到了以下正则表达式:
Validate simple select query using Regular expression
$reg="/^Select\s+(?:\w+\s*(?:(?=from\b)|,\s*))+from\s+\w+\s+where\s+\w+\s*=\s*'[^']*'$/i";
接下来我写下面的代码,但它总是打印不选择查询(每次$match为空)
$string="select * from users where id=1";
preg_match_all($reg,$string,$match);
if(!empty($match)){
echo "select query";
//execute and process result
//$this->user_model->list($string);
}else{
echo "not select query";
//show_message('inv_query');
}
请更正正则表达式以验证sql select语句(select,from,where,join,orderby groupby all in select statement).
或者让我知道完成任务的其他好方法.
/*
some sample select statements
select * from users where id=1;
select * from users where id=1 AND name= 'Prabhu';
select * from users where id=1 AND name= 'Prabhu' order by name;
Select * from users where id=1 AND name= 'Prabhu' group by id order by name;
Select * from users join role on users.role_id=role.id where id=1 AND name= 'Prabhu' group by id order by name;
*/
解决方法:
为什么不喜欢这样的:
$reg = "/^(\s*?)select\s*?.*?\s*?from([\s]|[^;]|(['"].*;.*['"]))*?;\s*?$/i";
适用于SQL select查询示例:http://www.phpliveregex.com/p/6nP.
它还会检查正在运行的唯一SQL查询是否为select查询,因此它应该只验证它们.它通过确保只有一个来做到这一点;除非那个;在一个字符串内,所以下面将验证.
select * from users where id=1 AND name= 'Pra;bhu';
但这不会.
select * from users where id=1 AND name= 'Prabhu'; drop table;
并且没有检查的正则表达式;在一个字符串中,如果它在其中将失败:
$reg = "/^(\s*?)select\s*?.*?\s*?from([\s]|[^;])*?;\s*?$/i"
内容总结
以上是互联网集市为您收集整理的Php Regex查找string是否为mysql select语句全部内容,希望文章能够帮你解决Php Regex查找string是否为mysql select语句所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。