2014-08-27 83 views
0

我允许userst通过发布表单来创建SQL查询(SELECT,UPDATE,INSERT)。PHP SQL查询检查是否包含INSERT

代码:

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

我想打一个mysqli_num_rows如果$sql使用SELECT

如何在$sql包含SELECT

+0

SELECT对于INSERT或UPDATE来说似乎是另一种类型的东西。当然,这是你的逻辑? – Strawberry 2014-08-27 08:52:58

+0

允许用户构建自己的查询? – Debflav 2014-08-27 08:53:52

+0

我很抱歉,我的错! – 2014-08-27 08:53:59

回答

0
$sql = ''; 
$rows = 0; 
$result = mysqli_query($link, $sql); 

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

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

+0

非常感谢。 +1表示第一个字符substr。 – 2014-08-27 09:08:13

0
$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] 

希望您可以根据您的方便进行调整。它的逻辑你需要。

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

谢谢你的回答。在发布代码时,还请附上简短的说明,以便OP能够理解代码。 – 2014-08-27 09:30:20

+0

好的......谢谢你的回复。 – 2014-08-27 09:32:43