php - 了解 PDO 类初始化

标签 php mysql pdo

我有一个包含一些实例变量的类:

class MyClass
{
    public $id;
    public $name;
}

和一个包含上述字段+一些附加字段(例如updated_at)的mysql表。我尝试使用 pdo 实例化上述类的对象,并使用以下代码将它们转换为 json 数组:

$statement = $pdo->prepare('SELECT * FROM `mytable`');
$statement->execute();
$statement->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, 'MyClass');
$objects =  $statement->fetchAll();

echo json_encode( (array) $objects );

现在看来,结果数组还包含其他字段,尽管它们不是我的类定义的一部分:

[{"id": 5, "name":"a name", "updated_at":"<timestamp>", "created_at":"<timestamp>"}]

这是怎么回事?避免这种情况的最佳方法是什么? 提前致谢。

最佳答案

class MyClass
{
    public $id;
    public $name;


    protected function setSelection() {
        return implode(
            ',',
            array_map(
                function ($value) {
                    return '`'.$value.'`';
                },
                array_keys(get_object_vars($this))
            )
        );
    }

    public function getData() {
        ....
        $statement = $pdo->prepare(
            'SELECT ' . $this->setSelection() . ' FROM `mytable`'
        );
        ....
    }
}

关于php - 了解 PDO 类初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22721028/

相关文章:

php - PHP函数中的MySQL查询

php - X 分钟前 Twitter 风格

php - 在程序中使用 $_SESSION 的 Mysql 问题

php - 如何像 Web 浏览器一样模拟获取请求?

php - 获取最大值PHP 中 3D 数组的索引

mysql - MySQL中的反向连接

mysql - 如何在MySQL中查询四分位数1、2、3?

PHP PDO : Displaying errors

php - 在 anchor 标记内添加动态计数器编号

php - 在 WHERE 子句中连接第三个表