是否可以递增 MySQL 列并在单个查询中获得结果?如果是这样,它如何以及比在两个查询中更有效?请注意,version
不是自增列。
$stmt=$this->pdo->prepare('UPDATE source_clients SET version=version+1 WHERE guid=?');
$stmt->execute([$guid]);
$stmt=$this->pdo->prepare('SELECT version FROM source_clients WHERE guid=?');
$stmt->execute([$guid]);
$version=$stmt->fetchColumn();
最佳答案
给自己一个好的 wrapper 。它将减少重复代码,使您的代码有效地看起来就像是一次调用中的两个查询。
$this->pdo->run('UPDATE source_clients SET version=version+1 WHERE guid=?',[$guid]);
$version=$this->pdo->run('SELECT version FROM source_clients WHERE guid=?',[$guid])
->fetchColumn();
以上方法来 self 的simple PDO wrapper
但实际上,您可以使用 PDO 在一次调用中运行这两个查询。
如果您打开仿真模式,则很有可能。然而,它不会使您的代码更短:
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$sql = 'UPDATE source_clients SET version=version+1 WHERE guid=:guid;
SELECT version FROM source_clients WHERE guid=:guid';
$stmt=$this->pdo->prepare($sql);
$stmt->execute(['guid' => $guid]);
$stmt->nextRowset();
$version = $stmt->fetchColumn();
我怀疑这种方法是否值得麻烦。
更多信息你可以在我的PDO tutorial的相应部分找到
关于mysql - 增加 MySQL 列并获得结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41284411/