Php Magento SQL语句未返回预期结果

Php Magento SQL语句未返回预期结果,php,mysql,magento,Php,Mysql,Magento,我正在运行Magento 1.7.0.2: 我尝试使用PHP&SQL从自定义表中检索所有列,但返回的结果与我预期的或通常得到的结果不同: $connection = $this->_getConnection('core_read'); $sql = "SELECT * FROM " . $this->_getTableName('my_custom_table_name') . " cped WHERE cped.id = ?"; $results = $con

我正在运行Magento 1.7.0.2:

我尝试使用PHP&SQL从自定义表中检索所有列,但返回的结果与我预期的或通常得到的结果不同:

$connection = $this->_getConnection('core_read');
$sql = "SELECT * FROM " .  $this->_getTableName('my_custom_table_name') . " cped
        WHERE  cped.id = ?";
$results = $connection->fetchOne($sql, array($id));
print_r($results); //this only prints out a single value

public function _getConnection($type = 'core_read'){
     return Mage::getSingleton('core/resource')->getConnection($type);
}

public function _getTableName($tableName){
     return Mage::getSingleton('core/resource')->getTableName($tableName);
}
问题是,即使我使用了

Select *
语句,它通常工作得非常好。巧合的是,如果我尝试指定我感兴趣的列名:

Select id, name, sku, custom_value
它只返回第一个值,因此我首先指定的列就是它返回的值


如果我尝试在PHPMyAdmin中运行相同的语句,它将完美地返回预期结果。有什么想法吗

这就是
fetchOne
所做的。它获得了第一张唱片。注意函数名中的
一个


尝试使用
fetchAll

这就是
fetchOne
所做的。它获得了第一张唱片。注意函数名中的
一个


尝试使用
fetchAll

结果发现我对直接SQL语句的功能有误解
fetchOne
实际上只从语句中获取一列结果,
fetchRow
查询将返回该表中的每一列。

结果表明,我对直接SQL语句的功能有误解
fetchOne
实际上只从语句中获取一列结果,
fetchRow
查询将返回该表中的每一列。

什么是
数组($id)
?您在这里传递的内容。
$id
在本例中是表的主键,它被
array()
包围,因为通常会在其中为
WHERE、ORDER by
等解析更多的值。尽管在本例中它可能被忽略。不使用
array()
运行它会返回相同的结果。谢谢@moose。这对我来说是新鲜事。这就是为什么我问w什么是
数组($id)
?您在这里传递的内容。
$id
在本例中是表的主键,它被
array()
包围,因为通常会在其中为
WHERE、ORDER by
等解析更多的值。尽管在本例中它可能被忽略。不使用
array()
运行它会返回相同的结果。谢谢@moose。这对我来说是新鲜事。这就是为什么我要乌坦克斯·马吕斯说,
fetchAll
似乎确实奏效了!但奇怪的是,fetchOne通常会为我获取整个记录,也就是说,我仍然可以访问该记录包含的任何列,在这种情况下,尽管它将我限制为仅一列。。知道是什么导致了这种行为吗?对不起,不知道。但我有一个指针。不要使用直接sql语句从表中获取数据。将模型与
load()
方法结合使用。更安全。感谢Marius的提示,我之所以使用direct语句是因为这种数据大小的性质,使用SQL with
read\u
可以比使用ORM更快地分析数据。这一个真的让我困惑,不过谢谢,谢谢你的投入!好啊我明白你的理由。你是对的。ORM并没有那么快。谢谢马吕斯,
fetchAll
似乎真的做到了!但奇怪的是,fetchOne通常会为我获取整个记录,也就是说,我仍然可以访问该记录包含的任何列,在这种情况下,尽管它将我限制为仅一列。。知道是什么导致了这种行为吗?对不起,不知道。但我有一个指针。不要使用直接sql语句从表中获取数据。将模型与
load()
方法结合使用。更安全。感谢Marius的提示,我之所以使用direct语句是因为这种数据大小的性质,使用SQL with
read\u
可以比使用ORM更快地分析数据。这一个真的让我困惑,不过谢谢,谢谢你的投入!好啊我明白你的理由。你是对的。ORM没有那么快。