相关疑难解决方法(0)

Php Regex查找string是否为mysql select语句

我正在尝试在执行它们之前验证查询,如果查询不是mysql select语句,那么我必须向用户显示消息.

我在此链接中找到了以下正则表达式: 使用正则表达式验证简单选择查询

$reg="/^Select\s+(?:\w+\s*(?:(?=from\b)|,\s*))+from\s+\w+\s+where\s+\w+\s*=\s*'[^']*'$/i"; 
Run Code Online (Sandbox Code Playgroud)

接下来我写下面的代码,但它总是打印不选择查询($ 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');
}
Run Code Online (Sandbox Code Playgroud)

请更正正则表达式以验证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 …
Run Code Online (Sandbox Code Playgroud)

php regex preg-match-all preg-match

3
推荐指数
1
解决办法
2214
查看次数

什么样的语言是SQL?

SQL是上下文无关语言还是其他类型的语言?

sql programming-languages chomsky-hierarchy

3
推荐指数
1
解决办法
2388
查看次数