重复键更新上的 PDO 不适用于 PHP 5.1.6


PDO ON DUPLICATE KEY UPDATE not work on PHP 5.1.6

<?php
$sql = "INSERT INTO `tables`
    (
        `uuid`,
        `name`
    )
    VALUES
    (
        :uuid,
        :name
    )
    ON DUPLICATE KEY UPDATE
        `name` = :name
    ";
$sth = $dbh->prepare($sql);
$sth->bindValue(':uuid', 'abc');
$sth->bindValue(':name', 'Chan');
$sth->execute()
当我第一次执行代码时,

它会在表中插入正确的数据,但是当我第二次执行时,name值变为 0,即使我将名称更改为其他值也会得到相同的结果,但如果我这样做:

<?php
$sql = "INSERT INTO `tables`
    (
        `uuid`,
        `name`
    )
    VALUES
    (
        :uuid,
        :name
    )
    ON DUPLICATE KEY UPDATE
        `name` = 'other name'
    ";
$sth = $dbh->prepare($sql);
$sth->bindValue(':uuid', 'abc');
$sth->bindValue(':name', 'Chan');
$sth->execute()

name值变other name,如何修复?

AFAIK 不能多次使用相同的参数名称。因此,请尝试以下操作

<?php
$sql = "INSERT INTO `tables`
(
    `uuid`,
    `name`
)
VALUES
(
    :uuid,
    :name
)
ON DUPLICATE KEY UPDATE
    `name` = :name2
";
$sth = $dbh->prepare($sql);
$sth->bindValue(':uuid', 'abc');
$sth->bindValue(':name', 'Chan');
$sth->bindValue(':name2', 'Chan');
$sth->execute()

编辑:请参阅下面的评论