插入或更新(如果已存在) - 准备好的声明

时间:2013-10-25 01:33:50

标签: php mysql prepared-statement upsert

如果记录已经存在,我已经找到了关于如何INSERT或UPDATE的答案,一个好的方法是使用on duplicate key update或REPLACE,但我似乎无法找到任何地方如何使用准备好的声明。这可能吗?

编辑:

好的,让我对我的问题更具体:

如果我有一个类似这个例子的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();
}

1 个答案:

答案 0 :(得分:3)

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

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