Php 为什么这个查询在指定日期时不起作用?

Php 为什么这个查询在指定日期时不起作用?,php,mysql,Php,Mysql,我已经用php连接了我的数据库。当我按下delete按钮时,一个php文件连接到另一个php文件,该文件具有以下代码: <?php include("dbconfig.php"); $memberID = $_GET['memberID']; $ISBN = $_GET['ISBN']; $copyNr = $_GET['copyNr']; $date_of_borrowing = $_GET['date_of_borrowing']; //getting id of the d

我已经用php连接了我的数据库。当我按下delete按钮时,一个php文件连接到另一个php文件,该文件具有以下代码:

<?php include("dbconfig.php");
 $memberID = $_GET['memberID'];
 $ISBN = $_GET['ISBN'];
 $copyNr = $_GET['copyNr'];
 $date_of_borrowing = $_GET['date_of_borrowing'];

//getting id of the data from url
$sql="DELETE FROM borrows WHERE ISBN=$ISBN AND memberID=$memberID AND copyNr=$copyNr AND date_of_borrowing=$date_of_borrowing";
$result = mysqli_query($conn,$sql);


//redirecting to the display page (borrows_table.php in our case)
//header("Location:borrows_table.php");

?>
当我运行这段代码时,没有和date\u of_looking=$date\u of_looking;
它会正确地删除元组,但当它如图所示时,不会发生任何事情。我已经检查了memberID、ISBN、copyNr和date_of_borrowing等变量在这个文件中是否正确。那么问题出在哪里呢?

您出错的地方是日期字段将错误的值mysql read date解析为yyyy mm dd格式,因此您必须将$date of_借阅格式设置为'yyyy mm dd'格式,然后它就可以正常工作了

$date = DateTime::createFromFormat('d/m/Y', $date_of_borrowing)->format('Y-m-d'); 
对我来说很好,一定要把日期放进去


PS-请在处理数据之前进行一些过滤和mysql注入检查。

在查询之前创建一个echo$sql。Mysql只接受以下格式 YYYY-MM-DD HH:II:SS 例如:2019-05-20 12:39:30 而且 把你的约会写在引号里


$sql="DELETE FROM borrows WHERE ISBN=$ISBN AND memberID=$memberID AND copyNr=$copyNr AND date_of_borrowing='$date_of_borrowing'";

echo $sql;

$result = mysqli_query($conn,$sql);

你想了解一下。这个问题的解决方案也可能解决日期的问题。日期需要被引用。@tim最佳答案!非常感谢。注意是否有人使用此SQL注入$\u GET['memberID']='或1-'因为您的查询将变成这样:从借款中删除,其中ISBN=或1将删除该表中的所有内容。借款的日期=$date\U of\U借款-也将很快爆炸,因为日期字符串date\U of\U借款=“$date\U of\U借款”周围没有引号。但是把它们放进去是没有意义的,因为如果你准备查询来阻止SQL注入,那就无关紧要了。我该怎么做呢?你怎么知道日期是什么格式的?它不会显示在代码中。有时用户不格式化日期,他们只是这样说,它不起作用@Thritienchessis日期是否错误并不重要,因为这是一个没有引号的MySQL语法错误。我的投票结果是,你的答案是,问题出在你不可能知道的地方。猜测是没有帮助的。我可以用$conn来回答这个问题,因为它不是一个有效的MySQL连接-我有关于这个变量的很多信息,就像你在$date\u of\u借用上的信息一样…最重要的是,请参阅关于sqlinjection,以及准备和绑定查询的重要性。