2010-11-16 49 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