Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我的一个MySQL查询有效,而另一个修改过的案例无效。我遗漏了什么?_Php_Mysql_Sql - Fatal编程技术网

Php 我的一个MySQL查询有效,而另一个修改过的案例无效。我遗漏了什么?

Php 我的一个MySQL查询有效,而另一个修改过的案例无效。我遗漏了什么?,php,mysql,sql,Php,Mysql,Sql,有多个类似于此的查询。包含$name的可以工作,而不需要$name的则不工作。我是不是遗漏了什么 提前谢谢!: 假设$name是从$_POST['name']创建的,只要是其他变量,这两个查询都容易受到SQL注入的攻击。出于安全考虑,请使用参数化语句。是的,$name是从$\u POST['name']创建的,我知道SQL注入漏洞。谢谢提醒,我将在下一阶段绑定参数。但这并不能回答我的问题,是吗?不,不是。这就是为什么它是一个评论,而不是一个答案;在else if构造中打印$_POST,并查看这些

有多个类似于此的查询。包含$name的可以工作,而不需要$name的则不工作。我是不是遗漏了什么


提前谢谢!:

假设$name是从$_POST['name']创建的,只要是其他变量,这两个查询都容易受到SQL注入的攻击。出于安全考虑,请使用参数化语句。是的,$name是从$\u POST['name']创建的,我知道SQL注入漏洞。谢谢提醒,我将在下一阶段绑定参数。但这并不能回答我的问题,是吗?不,不是。这就是为什么它是一个评论,而不是一个答案;在else if构造中打印$_POST,并查看这些值中是否有任何值为null,我在上面两个查询中看到的唯一区别是,括号是在days=0和hours中添加的,如果在最后一个条件中,则NOT运算符在其内部存在差异!在第二种情况下,即当用户未填写该字段时,isset$\u POST['name'],假设$name是从$\u POST['name']创建的,只要其他变量存在,这两个查询都容易受到SQL注入的攻击。出于安全考虑,请使用参数化语句。是的,$name是从$\u POST['name']创建的,我知道SQL注入漏洞。谢谢提醒,我将在下一阶段绑定参数。但这并不能回答我的问题,是吗?不,不是。这就是为什么它是一个评论,而不是一个答案;在else if构造中打印$_POST,并查看这些值中是否有任何值为null,我在上面两个查询中看到的唯一区别是,括号是在days=0和hours中添加的,如果在最后一个条件中,则NOT运算符在其内部存在差异!在第二种情况下,即当用户未填写该字段时,isset$\u POST['name']。
if(isset($_POST['name']) && isset($_POST['location']) && isset($_POST['mac']) && isset($_POST['hours']))        
    {           
    $stmt = $DB_con->prepare("Select * from ".$database.".`startstopdata` where Emp_name='".$name."' AND (date(start_work) BETWEEN '".$fromDate."' AND '".$toDate."') AND (Location!= Stop_location OR MacAddress != Stop_mac) AND days=0 AND hours<8;");       
    }
else if(isset($_POST['location']) && isset($_POST['mac']) && isset($_POST['hours']) && !isset($_POST['name']))      
    {           
    $stmt = $DB_con->prepare("Select * from ".$database.".`startstopdata` where (date(start_work) BETWEEN '".$fromDate."' AND '".$toDate."') AND (Location!= Stop_location AND MacAddress != Stop_mac) AND (days=0 AND hours<8);");         
    }