我有一个查询,将更新数据库中的一行,它工作得很好,提供有一行开始。
我怎么能说;更新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,那么它存在,需要更新,否则你应该保存)。