gpt4 book ai didi

php - 将 SQL 表反序列化为对象集合

转载 作者:行者123 更新时间:2023-11-29 13:21:25 26 4
gpt4 key购买 nike

我正在尝试将 SQL 表反序列化为 PHP 中的对象集合,但我不知道如何才能做到这一点。

在 C# 中,等效的是:

public class Object
{
public string objectProperty { get; set; }
public string anotherProperty { get; set; }
}

public void Deserialize()
{
List<Object> collection = new List<Object>();

// Assuming that we have an SQL statement returning a row

foreach (Row row in returnedSqlRow)
{
collection.Add(new Object
{
objectProperty = row["objectProperty"],
anotherProperty = row["anotherProperty"]
});
}
}

这会给我一个很好的 Objects 集合。

在我的 PHP 中我有以下内容:

class Book {
public $CN; // cataloguenumber
public $title;
public $author;
public $description;
public $price;
public $enteredby;
}

我的 SQL 语句是:

$books = pg_query($conn, 'SELECT cataloguenumber, title, author, description, price, enterby FROM CSBooks');

我可以像这样轻松访问行中的每个值:

    while($row = pg_fetch_row($books)) {

echo $row[0] . '<br>';
echo $row[1] . '<br>';
echo $row[2] . '<br>';
echo $row[3] . '<br>';
echo $row[4] . '<br>';
echo $row[5] . '<br>';
}

但我不知道如何创建对象集合并将该行反序列化为 Book 对象并存储它。有等效的PHP吗?我查看了 pg_fetch_object(),但它似乎并不是我要找的东西。

最佳答案

我认为解决方案是使用 PDO 和 PDOStatement::fetchObject这将抽象所有 pg_* 函数并使您的数据库交互更易于管理。

默认情况下它将返回一个 stdObject 而不是一个数组,但您可以让它映射您的对象。

如果你真的需要使用 pg_* 函数而不是 PDO,那么会有一个肮脏的解决方案......(我很惭愧地提出它)

$a = ['a'=>'bla', 'b'=>1];
$shame = (object) $a;

然后在您的类中,您只需编写一个构造函数来将列绑定(bind)到对象字段...

关于php - 将 SQL 表反序列化为对象集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40907683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com