PDO ON DUPLICATE KEY UPDATE 不适用于 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()

当我第一次执行代码时,它向table插入了正确的数据,但是当我第二次执行时,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,如何解决?

据我所知,您不能多次使用相同的参数名称。所以尝试以下

<?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()

编辑:请参阅下面的评论