0
我有一個奇怪的問題,使用socialEngine數據庫類(基於zend框架)。 我寫了這樣的事情:zend基於where子句消失
$statusTable = Engine_Api::_()->getDbtable('actions', 'activity');
$myPosts = $statusTable->fetchAll($statusTable->select()
->where('subject_id = ?',$id)
->where('comment_count > ?',0)
->where('type = ?',$type)
->where('date > ?',$newer_than)
->order('date DESC')
->limit(intval($num_items)));
它這樣的插件中提出,問題生成的查詢是財產以後的部分:
SELECT `engine4_activity_actions`.*
FROM `engine4_activity_actions`
WHERE (subject_id = 5) AND (comment_count > 0) AND (type =) AND (date >)
ORDER BY `date` DESC LIMIT 10
你可以看到,$類型和$ newer_than已經消失,即使它們有值($ type ='status',$ newer_than = '01/01/2000')
編輯: 它似乎只響應整數而不是字符串,如果我替換在查詢中顯示'0'狀態。
服務器上運行PHP 5.3.2
這很奇怪。如果您爲$ type和$ newer_than( - > where('type =?','status'))硬編碼一個值就像調試步驟那樣會發生什麼。也可以在運行此查詢之前嘗試打印出$ type和$ newer_than,以驗證它們是否有值。 – 2010-12-20 17:46:08
它做同樣的事情,我注意到它只發生在字符串,如果我用0替換$ type,例如值在查詢中。可能是字符串不允許或者我應該以某種方式逃脫它? – shay 2010-12-20 19:05:08
將'$ type'強制轉換爲字符串。它可能無法正常工作,但試一試' - > where('type =?',(string)$ type);' – tawfekov 2010-12-20 19:43:27