Php 数据库查询不同的结果

Php 数据库查询不同的结果,php,mysql,magento,Php,Mysql,Magento,我在编辑Magento存储时遇到了新问题。这个问题与PHP&MySQL相关,与Magento无关,因为我尝试使用处理数据库的原始PHP代码,而不是Magento处理程序和帮助程序 $a = "Tapet colectia Alice Whow C"; $sql = " SELECT * FROM `catalog_product_entity_varchar` WHERE `value` LIKE '%".$a."%' LIMIT 0, 30 "; 当我搜索$a变量时,我得到

我在编辑Magento存储时遇到了新问题。这个问题与PHP&MySQL相关,与Magento无关,因为我尝试使用处理数据库的原始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
时,我得到了所需的结果


为什么会发生这种情况?

那么你正在打电话到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);

请停止使用古老的mysql_*函数编写新代码。它们不再被维护,社区已经开始了弃用过程。相反,您应该学习准备好的语句并使用PDO或MySQLi。您是否尝试过打印查询并将其直接运行到mysql?作为一名新手,很难知道您从中了解到,我没有粘贴任何包含mysql_函数的代码。不管怎样,我今天会关注准备好的声明。你确定问题就出在那里?因为我使用了magento的连接性处理程序,当我搜索类似的表达式时,我得到了相同的结果(零)@JA:是的,我从phpmyadmin运行了它,它给了我正确的结果。当我在php文件中使用变量而不是表达式时,问题就出现了。@DanCapitanDePlai:然后你就得到了答案。问题在于您的php代码中没有提供这里的内容。@RohitKumarChoudhary“请”这个词不征税。但是,每增加一个多余的感叹号都应该征税。顺便说一句,如果您想了解更多有关
select()
语句语法的信息,请使用(包含在Magento中)。是的,mysql应该放弃,使用绑定值更安全,但请看一下在转向OOP模型时引入的复杂性。还不如用Java写一本小说。。。呃,它不能解决我的问题,但它仍然有用。这个错误只存在于那个表达式中(到目前为止,我并没有对它们全部进行测试),我想我可以为它做一个“补丁”,并以其他方式获得所需的结果。