我试图通过一个如下所示的自定义脚本直接从Magento数据库中读取:
require_once 'app/Mage.php';
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$conn = Mage::getSingleton('core/resource')->getConnection('core_read');
echo var_dump($conn);
function getAitocAttr() {
$test = $conn->fetchAll("SELECT * FROM customer_entity");
var_dump($test);
}
getAitocAttr();
运行此脚本时没有显示任何内容。我究竟做错了什么?我收到的错误是:
Fatal error: Call to a member function fetchAll() on a non-object
由于
答案 0 :(得分:3)
查看您的错误消息
致命错误:在非对象
上调用成员函数fetchAll()
PHP抱怨在非对象上对fetchAll
进行方法调用。查看您的代码,您拨打fetchAll
的唯一地点就在这里。
function getAitocAttr() {
$test = $conn->fetchAll("SELECT * FROM customer_entity");
var_dump($test);
}
在getAitocAttr
函数中,没有定义$conn
变量。当你说
$conn = Mage::getSingleton('core/resource')->getConnection('core_read');
您已在$conn
功能的范围内定义了getAitocAttr
。您需要在$conn
内定义getAitocAttr
,或将$conn
声明为getAitocAttr
内的全局,以使其正常工作。
答案 1 :(得分:0)
我不确定你的脚本究竟是什么问题。它看起来不错但是我对此问题略有不同,它对我有用。
require_once 'app/Mage.php';
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$conn = Mage::getSingleton('core/resource')->getConnection('core_read');
echo var_dump($conn);
function getAitocAttr()
{
$sql = "SELECT * FROM customer_entity";
$result = $conn->query($sql);
echo "<pre>";
while ($row = $readresult->fetch()) {
print_r($row);
}
}
getAitocAttr();