我在“解析错误:语法错误,意外T_VARIABLE”时遇到此错误我想更新电子邮件,如果它存在于数据库中...
{
$sql = 'INSERT INTO '._DB_PREFIX_.'newsletter (id_shop, id_shop_group, email, newsletter_date_add, ip_registration_newsletter, http_referer, active)
VALUES
('.$this->context->shop->id.',
'.$this->context->shop->id_shop_group.',
\''.pSQL($email).'\',
NOW(),
\''.pSQL(Tools::getRemoteAddr()).'\',
ON DUPLICATE KEY UPDATE
email='$email',
(
SELECT c.http_referer
FROM '._DB_PREFIX_.'connections c
WHERE c.id_guest = '.(int)$this->context->customer->id.'
ORDER BY c.date_add DESC LIMIT 1
),
'.(int)$active.'
)
';
return Db::getInstance()->execute($sql);
}
答案 0 :(得分:1)
您缺少一些句点,导致解析器翻转。改变这个:
email='$email',
到此:
email="'.$email.'",
那就是说,你不应该通过简单地连接像这样的字符串来构建查询;它打开你到SQL injection。您应该使用MySQLi或PDO并使用预准备语句来防止注入。
答案 1 :(得分:0)
email='$email',
应该是:
email=\''.$email.'\',