我不确定"chaining"是否是正确的术语,但我想问的是,是否可以制作类似于MySQLi查询的PDO查询。。。
$sql = mysqli_fetch_object($db->query("SELECT username FROM member WHERE userID = 1");
有了PDO,我只能用这种方式
$sql = $db->query("SELECT username FROM member WHERE userID = 1");
$query = $sql->fetch(PDO::FETCH_OBJ);
是否可以用PDO"连锁"查询(如果有更好的术语,请更正我)?
不幸的是,方法链接仅适用于query()
方法,但不适用于准备/执行。
因此,出于这个目的,我建议用一个像这样的小辅助功能来扩展PDO
public function run($sql, $bind = array())
{
$stmt = $this->prepare($sql);
$stmt->execute($bind);
return $stmt;
}
所以你可以像一样使用它
$sql = "SELECT username FROM member WHERE userID = ?";
$name = $db->run($sql, [1])->fetchColumn();
你试过吗
$query = $db->query("SELECT username FROM member WHERE userID = 1")->fetch(PDO::FETCH_OBJ);
您实际上可以链接准备好的插入和更新:
$data = $pdo->prepare('INSERT INTO `data` (data_key, data_value) VALUES (:data_key, :data_value)')->execute($args);
$data = $pdo->prepare('UPDATE `data` SET data_value = :data_value WHERE data_key = :data_key')->execute($args);
不能在准备好的选择中连锁执行。