我遇到以下代码的问题,它似乎工作并创建记录就好了,问题是每次我点击提交,而不是更新记录它只是创建一个新的。如果我关闭主键的自动增量,它会更新记录,但不会创建任何新记录,它似乎是一个或另一个:-S
<?php
$query = mysql_query("
INSERT INTO hqfjt_chronoforms_data_emailform
(cf_id,cf_uid,emailformname,datesent)
VALUES
('$_POST[cf_id]','$_POST[cf_uid]','$_POST[emailformname]','$_POST[datesent]')
ON DUPLICATE KEY UPDATE
datesent='$_POST[datesent]';
") or die(mysql_error());
?>
答案 0 :(得分:2)
您是否已尝试回显查询字符串?猜猜里面的变量替换是错误的。尝试这样的调试:
<?php
$sql = "INSERT INTO hqfjt_chronoforms_data_emailform
(cf_id,cf_uid,emailformname,datesent)
VALUES
('{$_POST['cf_id']}','{$_POST['cf_uid']}','{$_POST['emailformname']}','{$_POST['datesent']}')
ON DUPLICATE KEY UPDATE
datesent='{$_POST['datesent']}'";
echo $sql; // for debugging
$query = mysql_query($sql) or die(mysql_error());
?>
请注意上面更正的变量名称。 (围绕它的花括号,数组索引周围的引号)
答案 1 :(得分:0)
我无法想象这是问题所在,但当您将ID转换为int
并忽略引号时,会发生同样的事情吗?
<?php
$query = mysql_query("
INSERT INTO hqfjt_chronoforms_data_emailform
(cf_id,cf_uid,emailformname,datesent)
VALUES
(" . (int) $_POST['cf_id'] . ",'$_POST[cf_uid]','$_POST[emailformname]','$_POST[datesent]')
ON DUPLICATE KEY UPDATE
datesent='$_POST[datesent]';
") or die(mysql_error());
?>
顺便说一句,你真的不应该在没有$_POST
或更好的情况下在查询中使用mysql_real_escape_string
变量,使用预准备语句(PDO或mysqli)。