将 java epoch 字符串与 php epoch 日期进行比较
Posted
技术标签:
【中文标题】将 java epoch 字符串与 php epoch 日期进行比较【英文标题】:compare java epoch string with php epoch date 【发布时间】:2017-01-11 08:00:52 【问题描述】:这是我有一个 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);
?>
【问题讨论】:
在我看来,您的代码存在一些问题。首先,您将 db 连接脚本包含在一个循环中,其次您将变量直接嵌入到 sql 中,从而使其容易受到 sql 注入攻击。 【参考方案1】:您的代码存在一些问题,例如:
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
旁注:
在循环的每次迭代中包含连接处理程序是没有意义的,因此请在 while
循环之外使用此语句 require_once('connect.php');
。
了解prepared statements,因为现在您的查询容易受到 SQL 注入的影响。另见how you can prevent SQL injection in PHP。
编辑:
我想输入仅从输入时间起最近 7 天的数据...
如果这是您的要求,那么您可以使用 strtotime()
函数或 DateTime
类来完成此操作,
(1) 使用strtotime()函数
// your code
$content = $_POST['content'];
$start = strtotime("-7 days");
$date = strtotime($date);
$end = strtotime("now");
使用while
循环没有意义,一个简单的if
条件就可以了,
if($start <= $date && $end >= $date)
// your code
(2) 使用日期时间类
// 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
【讨论】:
感谢您的回答 Rajdeep 但我想输入从进入时间开始仅最近 7 天的数据,所以我必须使用 strtotime() 是否有任何其他方法可用...?? @HirenGujarati 我已经编辑了我的答案。请参阅我回答的已编辑部分。 嘿@rajdeep 它给出了错误 if(mysqli_query($con,$sql)) 在这一行称为 mysqli_query(): Empty query in /home/u336100496/public_html/call_detail/insert第19行上的.php无法添加EntryConnected成功 @HirenGujarati 您是否在if
块内构造了查询,例如:$sql = "INSERT INTO message_detail ...
?我不这么认为。以上是关于将 java epoch 字符串与 php epoch 日期进行比较的主要内容,如果未能解决你的问题,请参考以下文章
获取自 UTC 日期的 EPOCH 以来返回错误结果的毫秒? [复制]
是否可以使用 Epson ePOS SDK for iOS 为 ionic 3 插件创建cordova?
深度学习基础Epoch, Batch, Iteration这三个概念的区别与联系
validation_epoch_end 与 DDP Pytorch 闪电
tf.data.Datasets.repeat(EPOCHS) 与 model.fit epochs=EPOCHS 之间的区别