【问题标题】:compare java epoch string with php epoch date将 java epoch 字符串与 php epoch 日期进行比较
【发布时间】: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 注入攻击。

标签: java php android mysql


【解决方案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
    
    }
    


旁注:


编辑:

我想输入仅从输入时间起最近 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 ...?我不这么认为。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
  • 2019-04-20
相关资源
最近更新 更多