gpt4 book ai didi

php - 这是使用 PHP 更新/插入记录的正确方法吗?

转载 作者:行者123 更新时间:2023-11-29 12:02:43 24 4
gpt4 key购买 nike

我正在为时事通讯订阅者编写 HTML 表单。到目前为止,该表单通过使subscriber_email字段在mysql表中唯一并使用以下命令来忽略重复条目:

"INSERT IGNORE INTO newsletter_subscriber_popup (subscriber_name, subscriber_email)
VALUES ('$subscriber_name', '$subscriber_email')";

我正在尝试改进表单,以便当电子邮件已存在于表中时更新其他字段,如果电子邮件不存在,则会插入新记录。为此,我正在这样做(到目前为止它有效,但我觉得这不是正确的方法):

    //HTML form variables----------------------------------------------------//
$subscriber_name = mysql_real_escape_string($_POST['subscriber_name']);
$subscriber_email = mysql_real_escape_string($_POST['subscriber_email']);

//Try update into DB---------------------------------------------------------//
$sqlUpdate =
"UPDATE newsletter_subscriber_popup
SET subscriber_name = '$subscriber_name'
WHERE subscriber_email = '$subscriber_email'";

if(!mysql_query($sqlUpdate)){
//Insert into DB--------------------------------------------------------//
$sqlInsert =
"INSERT IGNORE INTO newsletter_subscriber_popup (subscriber_name, subscriber_email)
VALUES ('$subscriber_name', '$subscriber_email')";

if(!mysql_query($sqlInsert)){
die('Error: ' .mysql_error());
}
}

当subscriber_email存在并且更新其他字段时,脚本可以工作,但当它应该插入新记录时,脚本就会失败。

编辑----------------------------------------

重复 key 更新正是我正在寻找的。现在,当subscriber_email 已存在时,该脚本会更新其他字段;当subscriber_email 不存在时,该脚本会插入一条新记录。

    //HTML form variables----------------------------------------------------//
$subscriber_name = mysql_real_escape_string($_POST['subscriber_name']);
$subscriber_email = mysql_real_escape_string($_POST['subscriber_email']);

//Insert into DB--------------------------------------------------------//
$sqlName =
"INSERT IGNORE INTO newsletter_subscriber_popup (subscriber_name, subscriber_email)
VALUES ('$subscriber_name', '$subscriber_email')
ON DUPLICATE KEY UPDATE subscriber_name = '$subscriber_name'";

if(!mysql_query($sqlName)){
die('Error: ' .mysql_error());
}

注意:感谢您提供有关 sql 注入(inject)的所有建议,但问题与安全性无关。

最佳答案

INSERT .. ON DUPLICATE KEY UPDATE 可能正是您正在寻找的。请参阅https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

不过,您需要对subscriber_email 有一个唯一的约束。

关于php - 这是使用 PHP 更新/插入记录的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32095657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com