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()
编辑:请参阅下面的评论
<?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()
编辑:请参阅下面的评论