【问题标题】:Converting a date from string to object in PDO在 PDO 中将日期从字符串转换为对象
【发布时间】:2018-01-29 09:56:08
【问题描述】:

我学习了这门关于 PHP 的课程,但我真的迷失了这一点。关键是能够使用类来操作日期。

<?php
    ini_set('display_errors', 'On');

    // Create a class called user

    class User {

        protected $dates = [
            'created',
        ];
        // This is supposed to convert my dates from a string to an object
        public function __construct() {
            foreach($this->$dates AS $date) {
                $property = $this->{$date};
                $this->{$date} = new DateTime($property);
            }
        }
        // Adding a public function that will be available outsite of the class
        public function getFullName() {
            return "{$this->firstname} {$this->lastname}";
        }
    }

    $db = new PDO('mysql:host=127.0.0.1;dbname=pdo', 'root', '');

    $req = $db->query("SELECT * FROM users");
    $req->setFetchMode(PDO::FETCH_CLASS, 'User');

    echo '<pre>', var_dump($req->fetch()), '</pre>';
    die();

?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>PDO</title>
    </head>
    <body>
        <?php while($user = $req->fetch()): ?>
            <div class="user">
                <h4><?php echo $user->getFullName(); ?></h4>
                <p>Registered on <?php echo $user->created->format('d M Y'); ?></p> <!-- does not work -->
            </div>
        <?php endwhile; ?>
    </body>
</html>

当我加载页面时,出现三个错误:

注意:未定义的变量:日期在 /Applications/XAMPP/xamppfiles/htdocs/Side-Projects/Courses/PHP:SQL/Learn PHP 从零开始编程/04 - PHP 数据对象 (PDO)/51 - 用户 第 13 行的类 date/index.php

注意:未定义的属性:User::$ in /Applications/XAMPP/xamppfiles/htdocs/Side-Projects/Courses/PHP:SQL/Learn PHP 从零开始编程/04 - PHP 数据对象 (PDO)/51 - 用户 第 13 行的类 date/index.php

警告:为 foreach() 提供的参数无效 /Applications/XAMPP/xamppfiles/htdocs/Side-Projects/Courses/PHP:SQL/Learn PHP 从零开始编程/04 - PHP 数据对象 (PDO)/51 - 用户 第 13 行的类 date/index.php

有人可以帮助我了解如何解决此问题吗?提前谢谢你:)

【问题讨论】:

  • created 后面有一个不应该出现的逗号? created',
  • @KIKOSoftware - 应该不是问题,PHP 允许这样做
  • @Mark - 它不会在数组中创建另一个条目吗?在这种情况下是空的还是 NULL?
  • @KIKOSoftware - 不,很多开发人员确实将逗号放在“只是因为”......demo
  • @Mark - 好吧,我错了。我得测试一下。

标签: php mysql date pdo


【解决方案1】:
foreach($this->$dates AS $date)

应该是

foreach($this->dates AS $date)

否则你会尝试使用$dates 作为变量变量

【讨论】:

    【解决方案2】:

    你有两个问题

    first $this-&gt;$dates 应为 $this-&gt;datessecond AS 应为小写 as

    改变这个

    foreach($this->$dates AS $date) {
    

    到这里

    foreach($this->dates as $date) {
    

    【讨论】:

    • AS 或 as 工作相同。这并没有在我的其他程序中引入任何问题。 $this->dates 是解决方案;非常感谢!
    猜你喜欢
    • 2020-05-21
    • 2020-11-30
    • 2016-05-24
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多