我发现PDO::FETCH_CLASS
非常有用。我的类映射到表。我只是做了一个
$query = $pdo->query("SELECT * FROM fixedTime WHERE
transmissionProgramID = '$transmissionProgramID'");
$query->setFetchMode(PDO::FETCH_CLASS, 'FixedTime');
瞧。
我希望能够做相反的事情:即实例化一个对象将值加载到UPDATE或INSERT再次瞧瞧。
看了但看不出这是否可用。
答案 0 :(得分:0)
嗯,是的。在某种程度上,您可以使用类似的插入或更新。
但要实现这一目标,你必须学习how to use PDO properly。所以,首先我们必须修复您的选择代码:
$sql = "SELECT * FROM fixedTime WHERE transmissionProgramID = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$transmissionProgramID]);
$stmt->setFetchMode(PDO::FETCH_CLASS, 'FixedTime');
$ftime = $stmt->fetch();
请参阅 - 我们在这里使用预备语句,您应该始终使用。同时,这是[半]自动化的关键,我们可以使用更新。因为使用预准备语句,您可以使用对象本身为准备好的查询提供值。
因此,只要您有对象属性反映表字段,就可以使用如下代码:
$user = new stdClass();
$user->name = "foo";
$user->pass = "bar";
$sql = "INSERT INTO users VALUES (NULL, :name, :pass)";
$pdo->prepare($sql)->execute((array)$user);
但是对于真正的自动化,您必须考虑使用 ORM ,这正是您正在寻找的。例如,您可以查看Eloquent。因此,代码将像
一样简单明了$ftime = new fixedTime;
$ftime->value = time();
$ftime->save();