我正在运行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);
}
问题是,即使我使用了,它也只返回第一列(即本例中的id)
Select *
声明,通常效果很好。巧合的是,如果我尝试指定我感兴趣使用的列名:
Select id, name, sku, custom_value
它只返回第一个值,所以我首先指定的列就是它返回的值。
如果我尝试在PHPMyAdmin中运行相同的语句,它会完美地返回预期的结果。有什么想法吗?
fetchOne
就是这么做的。它获得了第一个记录。请注意函数名称中的One
尝试使用fetchAll
。
原来我对直接SQL语句的功能搞错了。fetchOne
确实只从语句中获取一列结果,fetchRow
查询将返回该表中的每一列。