2010-11-16 137 views
0

我使用通知模块在添加评论时通知用户。不过,我已经测试过它,并且电子邮件没有被发送出去。当我尝试处理通知队列时,出现以下错误:未发送Drupal通知邮件

user warning: 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 'type for db_type_placeholder AND send_interval = unsupported type for db_type_pl' at line 1 query: SELECT * FROM notifications_queue WHERE cron = unsupported type for db_type_placeholder AND send_interval = unsupported type for db_type_placeholder ORDER BY module, uid, destination, send_method, send_interval in /home/openupor/public_html/sites/default/modules/notifications/notifications.cron.inc on line 210.

有谁能告诉我如何解决此问题?我看了210行,但这并没有帮助我。我不知道从哪里开始。

回答

1

Drupal使用占位符系统安全地将变量插入到SQL中,避免了SQL注入的风险。

例如:

$nid = 100; 
db_query("SELECT title FROM {node} WHERE nid = %d;", $nid); 

将产生的查询:

SELECT title FROM {node} WHERE nid = 100; 

现在从错误消息,这看起来是试图将被插入到该查询是一个不支持的类型的变量,像fx stdClass。所以最好的开始就是看看产生这些变量的原因。

你应该搜索模块的问题日志,看看其他人是否有这个问题,如果没有,发布错误报告。它可能并不是一个bug,但是模块维护者可能会给你提供一些快速的答案或如何进行的建议,并且可以帮助其他人处理相同的情况。

+0

嗨Googletorp,谢谢你的回应。我从其他人那里拿过这个网站,所以我认为他们可能已经定制了代码。我需要在哪里查找产生这些变量的内容? – Ben 2010-11-17 10:41:03

+1

@Ben:要做的第一件事,就是确保你正在运行未经修改的代码。咬紧牙关,升级模块/核心,看看有什么突破,如果已经做了改动。那么你可以从那里拿走它,这是唯一明智的解决方案。试图维护一个没有记录的黑客攻击核心并不是运行Drupal站点的一种方式。 – googletorp 2010-11-17 10:52:42