以下是一些可以嘗試讓左連接工作並提高安全性的方法。
我通常在多行建立我的select語句,所以我喜歡把它放在一個變量中。爲了調試,我簡單地註釋掉我不需要的行。
$select = $firmobj->select()->from('country');
你要setIntegrityCheck(false)
,因爲你可能不會改變,並承諾從查詢結果。這裏有一個來自ZF文檔的引用。
Zend_Db_Table_Select主要用於約束和驗證 ,以便它可以強制執行合法SELECT查詢的條件。然而, 可能會存在某些情況下,您需要靈活的 Zend_Db_Table_Row組件,並且不需要可寫或可刪除的 行。對於這種特定的用戶情況,可以通過將一個FALSE值傳遞給setIntegrityCheck()來檢索行或 行集。
$select->setIntegrityCheck(false);
在這裏你加入。您可以將field1,field2,fieldn替換爲您要在結果中看到的firm_dtl表中的字段。
$select->joinLeft(array('c' => 'country'), 'c.id = firm_dtl.firm_country', array('field1', 'field2', 'fieldn'));
使用參數替換來避免SQL注入攻擊。
$select->where('firm_name LIKE ?', "$alpha%");
最後命令結果並獲取行集。
$select->order('firm_name');
$rowSet = $firmobj->fetchAll($select);
這段代碼無法運作? – 2011-12-21 17:05:36