考虑一下:
$query = 'UPDATE ' . $table . 'SET optin_date = NOW() WHERE MD5(email_address) = ' . $email;
我收到了这个错误:
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 '= NOW() WHERE MD5(email_address) = c5dfd29d956b52c1ffa00ce4a06ab' at line 1
我想要的是将当前时间戳存储到optin_date
列,使用NOW()
函数作为其值(我不确定它是如何工作的),仅如果来自查询字符串的散列电子邮件与来自mysql的MD5()
的数据库中的散列电子邮件匹配。我已经有一个TIMESTAMP
类型和CURRENT_TIMESTAMP
默认列。
另外,我需要使用电子邮件地址发送邮件进行确认。这可能吗?有什么更好的方法呢?:
$recipient = 'SELECT * FROM ' . $table . ' WHERE MD5(email_address) = ' . $email;
请帮助我解决语法问题,如果有一种优雅的方法可以编写“电子邮件确认订阅”(至少是函数处理散列电子邮件),您可以随意分享,谢谢。
答案 0 :(得分:1)
尝试在表名和字段名称周围添加这些``,在$ table
之后你也有一个丢失的SPACE$query = 'UPDATE `' . $table . '` SET `optin_date` = NOW() WHERE MD5(`email_address`) = ' . $email;
你应该也可以使用.mysql_real_escape_string($ email)而不仅仅是。$ email到底那里 - 安全风险
$query = 'UPDATE `' . $table . '` SET `optin_date` = NOW() WHERE MD5(`email_address`) = ' . mysql_real_escape_string($email);
除非(当初看起来)你的$ email将是md5哈希
答案 1 :(得分:0)
你在sql查询中有语法错误 写这个查询
$query = "Update '".$table."' SET option_date = NOW() WHERE email_address ='".md5($email)."' ";
答案 2 :(得分:-1)
试试这个:
$query = "UPDATE " . $table . "SET optin_date = CURRENT_TIMESTAMP
WHERE MD5(email_address) = '" . $email . "'";