PHP SQL查询检查是否包含INSERT


PHP SQL Queries check if contains INSERT

我允许用户通过发布表单来创建SQL查询(SELECT、UPDATE、INSERT)。

代码:

$sql = $_POST["sql_query"]
mysqli_query($link, $sql);

如果$sql使用SELECT,我想制作一个mysqli_num_rows

如何检查$sql是否包含SELECT

$sql = '';
$rows = 0;
$result = mysqli_query($link, $sql);
if(strtoupper(substr($sql,0,6)) == 'SELECT')
    $rows = mysqli_num_rows($result);

SELECT将始终是SQL中的第一个单词,因此只需比较前六个字符即可。一定要忽略大小写(我是通过大写字母来做这件事的),否则你可能会错过一些查询,但这应该是一个快速简单的解决方案。

$sql = $_POST["sql_query"];
if (strpos(strtolower($sql),'insert') !== false) 
{
    mysql_query($sql,$con);
}
else if (strpos(strtolower($sql),'select') !== false) 
{
  $row= mysql_num_rows(mysql_query($sql,$con));
}
[EDIT I dont know mysqli so i may not know the actual syntaxes. So i am giving w.r.t mysql]

希望您能根据自己的方便进行调整。这是你需要的逻辑。

if(strstr($sql,'SELECT') || strstr($sql,'select')) {
    //your code here
    $query = mysqli_query($link, $sql);
    $count = mysqli_num_rows($query);
    echo $count;
}