如果内容不存在,如何将此代码更改为 INSERT 而不是 UPDATE? [复制]
Posted
技术标签:
【中文标题】如果内容不存在,如何将此代码更改为 INSERT 而不是 UPDATE? [复制]【英文标题】:How can I change this code to INSERT instead of UPDATE if content doesn't exist? [duplicate] 【发布时间】:2014-04-24 16:57:09 【问题描述】:我有一个查询将更新数据库中的一行,只要那里有一行开头,它就可以正常工作。
怎么说呢?如果存在则更新如果不存在则插入?
require_once('../scripts/includePDO.php');
$who = $_SESSION['who'];
$formText = $_POST['protext'];
$sql = "UPDATE tbl_profiles SET proText = :formText WHERE user_id = :who";
$q = $conn->prepare($sql);
$q->bindValue(':who',$who,PDO::PARAM_INT);
$q->bindValue(':formText',$formText,PDO::PARAM_STR);
$q->execute();
header("Location: ../settings/?status=Done");
【问题讨论】:
【参考方案1】:假设user_id
是数据库中的唯一键:
$sql = "INSERT INTO tbl_profiles (user_id, proText) VALUES (:who, :formText) ON DUPLICATE KEY UPDATE proText = :formText";
【讨论】:
【参考方案2】:您的 SQL 查询应该是:
INSERT INTO tbl_profiles (user_id,proText) VALUES (:who,:formText)
ON DUPLICATE KEY UPDATE proText=:formText
这是假设 user_ID 是唯一的 id
【讨论】:
【参考方案3】:1- 简单的方法是使用 ORM,例如 Dotrine 2- ORM 如何处理这个问题: 通常表的主键(id)不应该为空。如果你有更新,那么你选择加载这个数据。在您选择数据结构(数组或对象或其他东西)中的加载ID字段。在 save 方法中只检查你想要保存的当前行是否有 id(如果这条记录有 id 则它存在并且需要更新,否则你应该保存)。
【讨论】:
以上是关于如果内容不存在,如何将此代码更改为 INSERT 而不是 UPDATE? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何将此javascript函数更改为Jquery [关闭]