Php 函数生成有效的sql语句,失败时如同非对象
我编写了一个PHP函数,它接受一系列参数并生成一个字符串。然后,该字符串将用于Magento$readConnection->fetchOne($thestring);请求,但实际读取数据库时失败,通过错误消息指示对fetchOne的调用是在非对象上进行的 但是,Varien_DB方法将字符串查询作为参数,并应返回一个数组作为结果Php 函数生成有效的sql语句,失败时如同非对象,php,mysql,sql,magento,Php,Mysql,Sql,Magento,我编写了一个PHP函数,它接受一系列参数并生成一个字符串。然后,该字符串将用于Magento$readConnection->fetchOne($thestring);请求,但实际读取数据库时失败,通过错误消息指示对fetchOne的调用是在非对象上进行的 但是,Varien_DB方法将字符串查询作为参数,并应返回一个数组作为结果 function updateDB($tablename,$entity,$selector,$id){ $query = 'SELECT entity_id
function updateDB($tablename,$entity,$selector,$id){
$query = 'SELECT entity_id, `value` FROM '.$tablename.' WHERE entity_id = '.$entity.' AND '.$selector.' = '.$id;
$result = $readConnection->fetchOne($query);
}
将此作为函数编写的原因是,我有大量产品可供选择,它们每天都会更新定价,但并非所有产品都会收到相同的更新。此外,价格位于数据库中的不同表上,因此通过将相关值传递给函数,我可以运行相应的查询
通过将值传递给函数生成的$query是一个有效字符串,它本身可以用作对数据库的查询(通过Navicat对数据库进行验证)。当$readConnection->fetchOne使用$query时,它返回一个错误“在非对象上调用成员函数fetchOne()”,因此我不确定发生了什么。$query不需要是一个对象,在对db单独运行时也不会失败
根据注释,$readConnection在调用函数之前定义。我可以把它设置为一个全局变量,看看是否有效
$resource = Mage::getSingleton('core/resource');
$readConnection = $resource->getConnection('core_read');
$writeConnection = $resource->getConnection('core_write');
似乎,
$readConnection
未设置为有效连接。$readConnection
未在函数中定义。如果这是一个方法,那么可能$this->readConnection->fetchOne(…)
?readConnection超出了您的函数范围,无论是全局的还是在类上设置的请参见上面Marc的回答。