是否可以增加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();
只要给自己一个好包装纸即可。它将减轻重复的代码,使您的代码有效看起来好像是一个调用中的两个查询。
$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();
上面的方法来自我的简单PDO包装器
但实际上,您可以在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教程的相应部分中找到更多信息