使用PDO更新整个表中base64中的单个字段

时间:2014-02-20 11:05:18

标签: php mysql pdo base64

我有一个mySQL数据库定义了一个包含很多字段的表。

我是否可以执行以下任何一个PDO语句来执行以下操作:

我想在数据库的每一条记录中对一个字段(字段名为cstat)进行base64_encode编码。

非常感谢任何帮助。

更新:

感谢TheEwook让我走上了正确的轨道并进行了一些进一步的搜索,我终于解决了这个问题(我有一个名为record_id的独特自动增量字段):

  $sth = $pdo->query("SELECT * FROM myTable");
  $sth->setFetchMode(PDO::FETCH_ASSOC);

    while($row = $sth->fetch()) {

        $cstat = base64_encode($row['cstat']);

        $sql="UPDATE myTable SET cstat = :cstat WHERE record_id = :record_id";
        $stmt = $pdo->prepare($sql);                                 
        $stmt->bindParam(':cstat', $cstat, PDO::PARAM_STR);
        $stmt->bindParam(':record_id', $row['record_id'], PDO::PARAM_INT);
        $stmt->execute();

    }

1 个答案:

答案 0 :(得分:0)

简单的更新查询就足够了

$sth = $dbh->prepare('UPDATE myTable SET cstat = TO_BASE64(cstat)');
$sth->execute();

或者如果您使用的是5.6.1之前的mySQL版本

$sth = $dbh->query("SELECT * FROM myTable");
$sth->setFetchMode(PDO::FETCH_ASSOC);

while($row = $sth->fetch()) {
    $cstat = base64_encode($row['cstat']);
    $sth2 = $dbh->prepare('UPDATE myTable SET cstat = ?');
    $sth2->execute(array($cstat));
}