增加MySQL列并获得结果

时间:2016-12-22 13:33:34

标签: mysql pdo

是否可以增加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();

1 个答案:

答案 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

的相应部分找到更多信息