Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 函数生成有效的sql语句,失败时如同非对象_Php_Mysql_Sql_Magento - Fatal编程技术网

Php 函数生成有效的sql语句,失败时如同非对象

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

我编写了一个PHP函数,它接受一系列参数并生成一个字符串。然后,该字符串将用于Magento$readConnection->fetchOne($thestring);请求,但实际读取数据库时失败,通过错误消息指示对fetchOne的调用是在非对象上进行的

但是,Varien_DB方法将字符串查询作为参数,并应返回一个数组作为结果

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的回答。