PHP Mysql语法使用MD5和NOW函数

时间:2012-01-06 06:00:47

标签: php mysqli

考虑一下:

$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;

请帮助我解决语法问题,如果有一种优雅的方法可以编写“电子邮件确认订阅”(至少是函数处理散列电子邮件),您可以随意分享,谢谢。

3 个答案:

答案 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 . "'";