我一直在研究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。参数绑定不那么迂回。