<?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
,如何解决?
答案 0 :(得分:2)
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()
编辑:请参阅下面的评论