如果preg_match不将 var 更改为 false



我一直在研究Brett M的"失踪手册"。它已经过时了。I.ve 一直在替换mysql func。这不是问题所在。我运行一个 if 语句来匹配使用 preg 匹配的 sql 命令。在 if 我将 var 设置为 true 之前。如果预处理匹配返回匹配项,则 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);

只需涵盖SELECT查询。 原因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);

现在,您可以毫无问题地继续您的工作

不要使用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。参数绑定不那么迂回。

最新更新