我有两个用于跟踪订单确认的网络表单。它们与同一个 MySQL 数据库交互。
这是数据库:
第一个网络表单被客户服务人员用来登记订单。它只包含内部系统中使用的订单号和一个时间戳(timelavet)。
这是它的代码(并且有效):
// Save data
$mySQLQuery = "INSERT INTO bestilling SET godkendelse = '" . mysql_real_escape_string($_POST['godkendelse']) . "', ordre = '" . mysql_real_escape_string($_POST['ordrenummer']) . "', timelavet = NOW() ";
$rs = @mysql_query($mySQLQuery);
客户使用第二种形式来确认订单并提供一些额外信息和确认时间戳 (timegodkend)。它使用订单号来标识要更新的数据库条目:
// Save data
$mySQLQuery = "UPDATE bestilling SET kursusleder = '" . mysql_real_escape_string($_POST['kursusleder']) . "', telefonnummer = '" . mysql_real_escape_string($_POST['telefonnummer']) . "', email = '" . mysql_real_escape_string($_POST['email']) . "', godkendelse = '" . mysql_real_escape_string($_POST['godkendelse']) . "', kommentar = '" . mysql_real_escape_string($_POST['kommentar']) . "', timegodkend = NOW() " . "' WHERE ordre = '" . mysql_real_escape_string($_POST['ordre']). "'";
$rs = @mysql_query($mySQLQuery);
没用!有趣的是,我可以在没有 timegodkend 变量的情况下让它工作,但无论我把“', timegodkend = NOW() ”放在哪里,它都会给我一条错误消息
错误:
1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '', WHERE ordre = '238581'' at line 1 When executing: UPDATE bestilling SET kursusleder = 'test1', telefonnummer = '2345678', email = 'a@brygge.dk', godkendelse = 'Ja', kommentar = 'test', timegodkend = NOW() ', WHERE ordre = ‘238581’
第二个代码片段有什么问题?
最佳答案
看起来你在这里有一个额外的不匹配的引用'
:
. "', timegodkend = NOW() " . "' WHERE ordre = '" .
^
关于php - 更新 mysql 条目失败,无法识别问题,可能与时间戳有关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432080/