是否可以增加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();
答案 0 :(得分:0)
让自己成为一个好的包装。它将减轻重复的代码,使您的代码看起来像在一次调用中只是两个查询。
$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();
上述方法来自我的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
的相应部分找到更多信息