我有一个像这样的PHP PDO查询:
$update = $pdo->query("UPDATE login_users SET lastactivity = '$lastactivity' WHERE user_id = 1");
我喜欢这样做,因为我认为我的代码看起来更好。
这样做可以吗?或者我应该这样做:
$params = array(
':id' => $_SESSION['jigowatt']['user_id'],
':lastactivity' => $lastactivity,
);
$update = $pdo->query('UPDATE login_users SET lastactivity = :lastactivity WHERE user_id = :id', $params);
答案 0 :(得分:2)
我有一个像这样的PHP PDO查询:
绝不你应该有这样的代码。
或者我应该这样做
你都不会写这样的准备好的陈述。还有其他方法。例如,没有人强迫您使用命名占位符。你可以使用位置,它们更简洁:
$sql = "UPDATE login_users SET lastactivity = ? WHERE user_id = ?";
$pdo->prepare($sql)->execute([$lastactivity],$_SESSION['jigowatt']['user_id']);
答案 1 :(得分:0)
这是PDO"查询包装器"的示例:
public function sendQuery($queryString, array $queryParams = array())
{
try {
$stmt = $this->_PDO->prepare($queryString);
$stmt->execute($queryParams);
} catch (\PDOException $e) {
if ($this->_PDO->inTransaction()) {
$this->_PDO->rollBack();
}
throw $e; // this line for example only (see comments of this answer)
}
return $stmt;
}
可以像这样使用:
$conn = \DBI::getConnection(); // DBI return DBC object
$x = $conn->sendQuery(
'SELECT x FROM tbl WHERE y = :y',
[':y' => $y]
)->fetch(\PDO::FETCH_COLUMN);