php - 如果已存在则插入或更新 - 准备好的语句

标签 php mysql prepared-statement upsert

我已经在各处找到了有关如何插入或更新(如果记录已存在)的答案,一个好的方法是使用重复键更新或替换,但我似乎找不到任何地方如何使用准备好的语句来做到这一点。这可能吗?

编辑:

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

如果我有像这个例子这样的 mysqli 准备好的语句:

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

在这种情况下,我如何构建重复 key 更新 这是我被卡住了,我不知道如何使用“?” :

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();
}

最佳答案

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

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

关于php - 如果已存在则插入或更新 - 准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19579653/

相关文章:

php - 如何在不使用 foreach 的情况下循环多维数组

php - jqgrid 从一个网格更新两个表

mysql - Sequelize : not able to login via localhost?

cassandra - PreparedStatements 是否由 CQL 字符串缓存? Datastax PreparedStatement 是否保留语句 ID?

php - 将普通的 SELECT 查询转换为准备好的 SELECT 查询

java - 带有查询JAVA的多个Jlabel

php - Laravel 中具有多对多关系的高级搜索

php - 交响乐 : Ordering Entity Type Form by entity relation

php - 如何计算PHP目录中.txt文件的数量?

javascript - 如何在 PHP CRUD 编辑操作中获取日期和复选框数据