2012-05-24 226 views
0

我在編輯我的Magento商店時遇到了一個新問題。這個問題是PHP &與Magento相關的MySQL不相關的,因爲我嘗試使用處理數據庫的原始PHP代碼,而不是Magento處理程序和幫助程序。數據庫查詢不同的結果

$a = "Tapet colectia Alice Whow C"; 

$sql = " 
    SELECT * 
    FROM `catalog_product_entity_varchar` 
    WHERE `value` LIKE '%".$a."%' 
    LIMIT 0, 30 
"; 

當我搜索$a可變我得到0的結果,但是當我搜索變量的值Tapet colectia Alice Whow C,我得到想要的結果。

這是怎麼發生的?

+3

請不要用新的mysql_ *函數編寫新代碼。他們不再被維護,社區已經開始了貶值過程。相反,您應該瞭解準備好的聲明並使用PDO或MySQLi。 – Bono

+0

你試過打印查詢並直接運行到mysql? –

+0

作爲一個新手,它很難知道你知道,我沒有粘貼任何包含mysql_functions的代碼。無論如何,我今天會關注準備好的陳述。你確定問題來自那裏?因爲我使用了magento的連接處理程序,當我搜索這樣的表達式時,我得到了相同的結果(零)。 @JA:是的,我從phpmyadmin運行它,它給了我正確的結果。當我在php文件中使用變量而不是表達式時,問題就出現了。 – DanCapitanDePlai

回答

1

所以你打電話給Magento數據庫,是吧?那麼,我通常這樣做:

require_once '/path/to/app/Mage.php'; 
Mage::app(); 

$db = Mage::getSingleton('core/resource')->getConnection('core_read'); 
$a = 'Tapet colectia Alice Whow C'; 
$select = $db->select() 
      ->from('catalog_product_entity_varchar') 
      ->where($db->quoteIdentifier('value') . ' LIKE ?', "%{$a}%"); 
$result = $db->fetchAll($select); 
echo count($result); 
+0

順便說一句,這是使用[Zend_Db](http://framework.zend.com/manual/en/zend.db.select.html)(包含在Magento中),如果你想了解更多關於'select()'語句。 – nachito

+0

是的,應該放棄mysql的東西,並使用綁定值更安全,但看看移植到OOP模型時引入的複雜性。不妨用Java編寫一本小說......呃。 – Roscius

+0

它不能解決我的問題,但它仍然有用。該錯誤只存在於表達式中(迄今爲止,我並沒有測試全部),我想我可以爲它做一個'補丁'並以其他方式獲得所需的結果。 – DanCapitanDePlai

相關問題