这里我有一个java字符串纪元日期,我想比较和添加数据 SQL它给出一个解析错误,不知道为什么有任何解决方案..
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
//Getting values
$number = $_POST['number'];
$type = $_POST['type'];
$date = $_POST['date'];
$content = $_POST['content'];
$start = strtotime("now");
$end = strtotime("-7 days");
while($start->format('U') > $date->format('U') > $end->format('U')){
$sql = "INSERT INTO message_detail (number,type,date,content) VALUES ('$number','$type','$date','$content')";
//Importing our db connection script
require_once('connect.php');
//Executing query to database
if(mysqli_query($con,$sql)){
echo 'Entry Added Successfully';
}else{
echo 'Could Not Add Entry';
}
}
//Closing the database
mysqli_close($con);
}
?>
答案 0 :(得分:0)
您的代码存在一些问题,例如:
strtotime()
函数返回一个整数时间戳,而不是DateTime
个对象,因此您无法像这样调用format()
方法。
$start = strtotime("now");
$start->format('U');
// etc. are wrong
相反,请创建一个DateTime
对象,然后将其称为format()
方法,如下所示:
$start = new DateTime("now");
$start->format('U');
// etc.
现在谈谈您的问题,
它提供了解析错误
由于你的while
条件,
while($start->format('U') > $date->format('U') > $end->format('U')){ ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
可能是,你想做这样的事情:
while($start->format('U') < $date->format('U') && $date->format('U') > $end->format('U')){
// your code
}
击> <击> 撞击>
旁注:
在循环的每次迭代中都不包括连接处理程序,因此请在require_once('connect.php');
循环之外使用此while
语句。
了解prepared statements因为您的查询现在容易受到SQL注入的影响。另请参阅how you can prevent SQL injection in PHP。
我想输入入境时间过去7天的数据......
如果这是您的要求,那么您可以使用strtotime()
函数或DateTime
类,
// your code
$content = $_POST['content'];
$start = strtotime("-7 days");
$date = strtotime($date);
$end = strtotime("now");
使用while
循环毫无意义,简单的if
条件就可以了,
if($start <= $date && $end >= $date){
// your code
}
// your code
$content = $_POST['content'];
$start = new DateTime("-7 days");
$date = new DateTime($date);
$end = new DateTime("now");
使用while
循环毫无意义,简单的if
条件就可以了,
if($start->format('U') <= $date->format('U') && $end->format('U') >= $date->format('U')){
// your code
}