Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否存在与PDO::FETCH_类等效的插入或更新?_Php_Mysql_Class_Pdo_Sql Update - Fatal编程技术网

Php 是否存在与PDO::FETCH_类等效的插入或更新?

Php 是否存在与PDO::FETCH_类等效的插入或更新?,php,mysql,class,pdo,sql-update,Php,Mysql,Class,Pdo,Sql Update,我发现PDO::FETCH_类非常有用。我的类映射到表。我只是做一个 $query = $pdo->query("SELECT * FROM fixedTime WHERE transmissionProgramID = '$transmissionProgramID'"); $query->setFetchMode(PDO::FETCH_CLASS, 'FixedTime'); 瞧 我希望能够做相反的事情:即实例化一个对象,加载要更新或插入的值

我发现
PDO::FETCH_类非常有用。我的类映射到表。我只是做一个

$query = $pdo->query("SELECT * FROM fixedTime WHERE
                  transmissionProgramID = '$transmissionProgramID'");
$query->setFetchMode(PDO::FETCH_CLASS, 'FixedTime');

我希望能够做相反的事情:即实例化一个对象,加载要更新或插入的值,然后再看一次


我已经看过了,但看不出这是否可用。

嗯,是的。在某种程度上,您可以使用类似的方法进行插入或更新

但要做到这一点,你必须学习。因此,首先我们必须修复您的选择代码:

$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 < /强>,这正是你正在寻找的。例如,您可以看一看。因此,代码将与

$ftime = new fixedTime;
$ftime->value = time();
$ftime->save();

相反,您需要做一些工作,例如,
插入到{object->table}(name)值({object->name})
。请改用水合器/脱水器,因为:@Axalix Pre-constructor-value-allocation对于将数据库中的原始数据转换为类中更有用的数据很有价值(例如,将datetime字符串转换为
datetime
对象)。@Marty我更喜欢构造函数来完成它的工作(实例化),因为有些属性可能只能用类中的默认值进行实例化,所以当我用这个类打开文件时可以看到它们。当事情隐式发生时,我不太喜欢魔法(特别是当您应该在凌晨3点修复某人代码中的生产错误时)。@Axalix PHP不是一个很好的语言选择,如果您不喜欢魔术:-P