使用sql查询中的输入值

时间:2016-04-04 13:53:41

标签: php sql

我试图向所有有mon_morn ='是'在ip_employee_availability表中但我不希望员工在他们请求的时间关闭时显示,该时间存储在ip_employee_request中,并且他们的requestDate与我输入中的日期相同,例如,如果他们已请求2016-03-27关闭,但他们有mon_morn ='是'在可用性表中,我不希望它们显示。

这是输入

<form action="mng_menu2.php" method="post">
    <input type='text' name='monday' id='date' value='2016-03-27'>
</form>

这是查询

$sql = "SELECT e.employeeName FROM ip_employee_availability a
INNER JOIN ip_employee e ON a.employeeID = e.employeeID
INNER JOIN ip_employee_request r ON a.employeeID = r.employeeID
where mon_morn = 'yes' and requestDate <> $_POST['monday] ";

$myData= mysqli_query($con,$sql);

2 个答案:

答案 0 :(得分:0)

嗯。在这种情况下我想not exists

SELECT e.employeeName
FROM ip_employee_availability a INNER JOIN
     ip_employee e
     ON a.employeeID = e.employeeID
WHERE a.mon_morn = 'yes' AND
      NOT EXISTS (SELECT 1
                  FROM ip_employee_request r 
                  WHERE a.employeeID = r.employeeID AND
                        r.requestDate = $_POST['monday]
                 );

您可以通过使用参数而不是在查询字符串中嵌入用户输入值来修复潜在的SQL注入问题。

答案 1 :(得分:0)

这是一个仅限PHP的问题。 您需要了解为什么在继续之前获得“未定义的索引:星期一”异常。 请尝试以下

<?php
if (isset($_POST['monday'])) {
   echo 'Hello ' . htmlspecialchars($_POST['monday']) . '!';
} else {
   echo 'Something went wrong.';
}
?>

在尝试查看潜在的SQL查询问题之前,让该部分工作。 您可以找到更多信息here

与此同时,关于SQL查询:由于$_POST['monday']变量存在问题,您是否尝试将其替换为静态值,例如'2016-03-27'?它有效吗?