2

如果记录已经存在,我到处都找到了关于如何插入或更新的答案,一个好的方法是使用on duplicate key update或替换,但我似乎无法找到任何地方如何使用准备好的语句来做到这一点。这可能吗?

编辑:

好的,让我更具体地回答我的问题:

如果我有一个类似这个例子的 mysqli 准备好的语句:

if ($stmt = $mysqli->prepare("UPDATE test SET name= ?, age= ? WHERE iduser= ?")) {    
    $stmt->bind_param('ssi', $name, $age, $id);
    $stmt->execute();
}

在这种情况下,我该如何构建一个on duplicate key update 这是我被卡住了,我不知道如何使用“?” :

if ($stmt = $mysqli->prepare("INSERT INTO test (iduser, name, age) VALUES (?,?,?))){
ON DUPLICATE KEY UPDATE name=?,age=?")) {    
    $stmt->bind_param('iss', $id, $name, $age);
    $stmt->execute();
}
4

1 回答 1

3

我可能遗漏了一些东西,但你能不能只将第二个 bindParam 更新为:$stmt->bind_param('issss', $id, $name, $age, $name, $age)

如果您不知道问号是如何工作的并且只是复制/粘贴代码示例,我建议您阅读mysqli或查看PDO

于 2013-10-25T21:04:14.363 回答