我一直在研究brett m的“失踪手册”。它过时了。我一直在替换mysql func。那不是问题。我使用preg匹配运行if语句来匹配sql命令。如果我将var设置为true之前。如果preg match返回匹配,则var将更改为false。如果没有运行。脚本执行到mysqli_fetch。请帮忙。
$return_rows=true;
If(preg_match("/^\s*(CREATE|INSERT|UPDATE|DELETE|DROP)/i", $query_text))
{
$return_rows=false;
}
If($return_rows)
{
While($row=mysqli_fetch_row($result)){ echo $row[0]; }
}
else{ echo "query processed"; }
mysqli_close($u);
答案 0 :(得分:0)
只需查看SELECT
查询即可。 cause SELECT
是从数据库请求数据的主要查询。
if( strtolower( substr( trim( $query_str ) ) , 0, 6) == "select"){
// SELECT query is being requested
while($row=mysqli_fetch_row($result)){ echo $row[0]; }
else{ echo "query processed"; }
mysqli_close($u);
现在,您可以毫无问题地继续工作
答案 1 :(得分:-1)
在其中一种情况下,不使用if
仅更新$return_rows
,而是直接指定正则表达式匹配结果:
$return_rows = !preg_match("/^\s*(CREATE|INSERT|UPDATE|DELETE|DROP)/i", $query_text);
这里的!
是否定的。您可能希望使用更合适的变量名称。
然后使用您的if
检查来获取行,或者打印其他消息:
if ($return_rows) {
// fetch rows
}
else {
// no fetching
}
另外考虑使用PDO而不是mysqli。参数绑定的方式不那么迂回。