我有两个用于跟踪订单确认的网络表单。它们与同一个MySQL数据库进行交互。
这是数据库:
第一个webform用于由客户服务人员注册订单。它只包含内部系统中使用的订单号和时间戳(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)。它使用订单号来识别要更新的DB条目:
// 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:您的SQL出错了 句法;检查手册 对应于您的MySQL服务器 用于正确语法的版本 靠近'',WHERE ordre ='238581''at 第1行执行时:UPDATE bestilling SET kursusleder ='test1', telefonnummer ='2345678',email = 'a@brygge.dk',godkendelse ='Ja', kommentar ='test',timegodkend = NOW()',WHERE ordre ='238581'
第二个代码段有什么问题?
答案 0 :(得分:3)
在这里看起来你有一个额外的不匹配的引用'
:
. "', timegodkend = NOW() " . "' WHERE ordre = '" .
^