如果内容不存在,我如何将此代码更改为INSERT而不是UPDATE ?


How can I change this code to INSERT instead of UPDATE if content doesn't exist?

我有一个查询,将更新数据库中的一行,它工作得很好,提供有一行开始。

我怎么能说;更新if存在插入if不存在?

    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");

假设user_id是数据库中的唯一键:

$sql = "INSERT INTO tbl_profiles (user_id, proText) VALUES (:who, :formText) ON DUPLICATE KEY UPDATE proText = :formText";

您的SQL查询应该是:

INSERT INTO tbl_profiles (user_id,proText) VALUES (:who,:formText)
ON DUPLICATE KEY UPDATE proText=:formText

假设user_ID是唯一的id

1-简单的方法是使用ORM,如Dotrine
2- ORM如何处理:
通常表有主键(id),不应该是空的。如果你有更新,那么你必须选择加载这个数据。在你选择加载id字段在你的数据结构(数组或对象或其他东西)。在保存方法只检查当前行,你想保存它有id(如果这个记录有id,那么它存在,需要更新,否则你应该保存)。