我有一个包含一些实例变量的类:
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/