2011-05-13 77 views
4

我有以下功能:奇怪的PHP错误:功能不承认自己的参数

public function updateCustomerInternetBanking($value, $column_to_go_by) 
    { 
    $sql = " 
     UPDATE customer c 
     JOIN account_import ai ON c.account_import_id = ai.id 
     JOIN generic_import gi ON ai.generic_import_id = gi.id 
     JOIN import_bundle ib ON gi.import_bundle_id = ib.id 
     SET has_internet_banking = 1 
     WHERE c.".$column_to_go_by." = ".$this->quote($value)." 
     AND ib.id = ".$this->quote($this->getId())." 
    "; 

    $conn = Doctrine_Manager::connection(); 
    $conn->execute($sql); 
    } 

当我尝试在开发运行它,它工作正常。当我尝试在生产环境中运行它,我得到这个:

PHP Notice: Undefined variable: column_to_go_by in /var/www/mcif/lib/model/doctrine/ImportBundle.class.php on line 655 

怎么能$column_to_go_by是不确定的?

而只是让你知道,这段代码是直接从生产复制我检查了WHERE ......行是第655

+0

那么,你在哪里定义了这个变量? :))在调用这个函数 – 2011-05-13 20:03:52

+0

'$ column_to_go_by'中填充了什么样的值? – 2011-05-13 20:04:03

+1

开发和生产之间的PHP版本和错误处理配置是否相同? – mellamokb 2011-05-13 20:04:29

回答

1

你确定正确地传递两个变量?

一个方法调用这样的:

updateCustomerInternetBanking(999);

会产生这种错误。

+0

这正是发生的事情。我有一个旧版本的某个文件,因为我已经重命名了。当我开始生产时,该文件永远不会被删除,并且由于类名保持不变,文件被自动加载。这个旧文件使用错误的参数数目调用'updateCustomerBanking()'。 – 2011-05-13 20:29:05

+0

不错,认为如果你没有通过一个没有默认值的参数,它会给出一个致命的错误。但这只是PHP中的一个警告。 – meze 2011-05-13 20:33:38