这是我第一次使用insert ..复制,我有一个问题。我在重复更新时的插入并不像我预期的那样完全正常工作,例如,每次我尝试更新数据库中的表时,都会在数据库中插入一个新行,而不是按预期更新行。很奇怪。我想知道是否有人会看一看并通过你的看法。 顺便说一句,我有一个主要的和唯一的钥匙。
if (isset($_POST['update'])) {
$a = mysqli_real_escape_string($dbc, $_POST['a']);
$b = mysqli_real_escape_string($dbc, $_POST['b']);
$c = mysqli_real_escape_string($dbc, $_POST['c']);
$insert = "INSERT INTO details
( a
, b
, c
)
VALUES
( ?
, ?
, ?
)
ON DUPLICATE KEY
UPDATE a = VALUES (a)
, b = VALUES(b)
, c = VALUES(c)";
$row = mysqli_prepare($dbc, $insert);
mysqli_stmt_bind_param($row, 'sss',$a $b, $c);
/* execute query */
$execute = mysqli_stmt_execute($row);
if ($execute) {
echo "success";
} else {
echo "error ";
}
}
表
CREATE TABLE `Rest_Details` (
`A` int(34) NOT NULL AUTO_INCREMENT,
`B` varchar(100) NOT NULL,
`C` varchar(200) NOT NULL,
PRIMARY KEY (`A`),
UNIQUE KEY `B` (`B`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8
答案 0 :(得分:0)
您的$insert
查询缺少近距离引用:
$insert = "INSERT INTO details
( a
, b
, c
)
VALUES
( ?
, ?
, ?
)
ON DUPLICATE KEY
UPDATE a = VALUES (a)
, b = VALUES(b)
, c = VALUES(c)"