#php
#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
может быть неопределенным?!
И просто чтобы вы знали, этот код скопирован прямо из production, и я проверил, что WHERE
… строка — это строка 655.
Комментарии:
1. Хорошо, где вы определили эту переменную? :)) При вызове этой функции
2. Какого рода значение
$column_to_go_by
заполняется?3. Одинаковы ли версии PHP и конфигурация обработки ошибок при разработке и производстве?
4. Если он говорит, что он не определен, значит, он не определен. Тогда у вас в рабочей среде находится старый код или вы ищете не в том файле.
5. @Wouter Ян ван Тилбург: Извините, я не понимаю.
Ответ №1:
Вы уверены, что передаете обе переменные правильно?
Вызов метода, подобный этому:
updateCustomerInternetBanking(999);
это привело бы к такого рода ошибке.
Комментарии:
1. Это именно то, что происходило. У меня была старая версия определенного файла, который я с тех пор переименовал. Когда я повторно синхронизировался в рабочей среде, этот файл так и не был удален, и поскольку имя класса осталось прежним, файл загружался автоматически. Вызывается старый файл
updateCustomerBanking()
с неправильным количеством аргументов.2. приятно, подумал, что если вы не передадите аргумент, у которого нет значения по умолчанию, это выдаст неустранимую ошибку. Но это всего лишь предупреждение в PHP.