繁体   English   中英

PHP DateTime错误| date_create()[function.date-create]:依靠系统的时区设置并不安全

[英]PHP DateTime Error| date_create() [function.date-create]: It is not safe to rely on the system's timezone settings

我在重新加载页面时将日期发布到数据库中以获取日期时遇到问题。 我希望它自动为最后一个条目加上时间戳。

<!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>Location Tracker</title>
    </head>
    <body>

    <hl> ACW Location Tracker </hl>

<?php
    $server = 'SQL2008.net.dcs.hull.ac.uk';

    $connectionInfo = array("Database"=>"rde_531545");
    $conn = sqlsrv_connect($server,$connectionInfo);
    $query='create table Location ';
    $query .= '(Username int NOT NULL IDENTITY(500, 23), First_Name varchar(50) NOT NULL, Surname varchar(50) NOT NULL, Current_Location varchar(50) NOT NULL, Date datetime NOT NULL, PRIMARY KEY (Username))';
    $result = sqlsrv_query($conn, $query);

    if (!$result)
    {
      if( ($errors = sqlsrv_errors() ) != null)
      {
         foreach( $errors as $error ) {
           echo "<p>Error: ".$error[ 'message']."</p>";
         }
      }
    }
    else {
      echo "<p>DB successfully created</p>";
    }
    sqlsrv_close($conn);

    $connectionInfo = array( "Database"=>"rde_531545");
    $conn = sqlsrv_connect($server,$connectionInfo);
    $insert_query = "INSERT INTO Location (First_Name, Surname, Current_Location, Date) VALUES (?, ?, ?,? )";
    $params = array("John","Doe","Hull", Date);
    $result = sqlsrv_query($conn,$insert_query,$params);
    $params = array("Jane","Doe","Hull", Date);
    $result = sqlsrv_query($conn,$insert_query,$params);

    $LocationQuery='SELECT Username, First_Name, Surname, Current_Location, Date FROM Location';
    $results = sqlsrv_query($conn, $LocationQuery);
    if ($results) while($row = sqlsrv_fetch_array($results, SQLSRV_FETCH_ASSOC))
    {
       echo '<p>'.$row['Username'].' '.$row['First_Name'].' '.$row['Surname'].' '.$row['Current_Location'].' '.$row['Date'].'</p>';
    }
?>
    </body>
</html>

我得到的错误是:

注意:使用未定义的常量日期-在第44行的C:\\ RDEUsers \\ NET \\ 531545 \\ Location.php中假定为'Date'

警告:date_create()[function.date-create]:依靠系统的时区设置并不安全。 需要使用date.timezone设置或date_default_timezone_set()函数。 如果您enter code here这些方法的任何enter code here但仍然收到此警告,则很可能拼写了时区标识符。 我们在第49行的C:\\ RDEUsers \\ NET \\ 531545 \\ Location.php中将“欧洲/伦敦”选择为“ 0.0 /无DST enter code here ”,而不是

可捕获的致命错误:第51行的C:\\ RDEUsers \\ NET \\ 531545 \\ Location.php中无法将类DateTime的对象转换为字符串

您正在发送Date类,而不是发送字符串'2017-02-03'。

该错误位于$params = array(....., Date);

在这段代码的第二行中:

$insert_query = "INSERT INTO Location (First_Name, Surname, Current_Location, Date) VALUES (?, ?, ?,? )";
$params = array("John","Doe","Hull", Date);

您需要创建一个Date对象$date = new DateTime(); 并进入查询,您需要使用format函数从其中提取字符串:

$dateStr = $date->format(''Y-m-d H:i:s'');

然后,在您的参数中使用$ dateStr: $params = array("John","Doe","Hull", $dateStr);


编辑1:

$date = new DateTime();
$dateStr = $date->format('Y-m-d H:i:s');
$params = array("John","Doe","Hull", $dateStr);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM