2012-05-24 129 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

相关问题