2014-12-04 4 views
1

У меня есть эта функция php для добавления объекта в базу данных, но это дает мне некоторые проблемы, чтобы заставить его работать. Я довольно привык к java-способу, поэтому я попытался выполнить один и тот же шаблон, и у меня появляется сообщение об ошибке «Строгие стандарты: только переменные должны передаваться по ссылке». Это код:Передача атрибута объекта по ссылке

public function saveUser(User $user){ 
    $this->connection = DaoFactory::openConnection(); 
    $this->query = $this->connection->prepare($this->SAVE_QUERY); 

    $this->query->bindParam(':name', $user->getName()); 
    $this->query->bindParam(':lastName', $user->getLastName()); 
    $this->query->bindParam(':age', $user->getAge()); 
    $this->query->bindParam('gender', $user->getGender()); 
    $this->query->bindParam(':email', $user->getEmail()); 
    $this->query->bindParam(':password', $user->getPassword()); 

    $this->query->execute(); 
    $this->connection = null; 

} 

Я искал, и я обнаружил, что атрибут объект должен быть помещен в переменную, чтобы избежать этой проблемы, но, делая это, код становится очень грязным и complex.Example:

$name = $user->getName(); 
$this->query->bindParam(':name',$name); 

Есть ли другой способ решить эту проблему?

ответ

2

bindParam ожидает переменную, переданную по ссылке, вместо этого вы даете ей значение, возвращаемое функцией, которая не может быть передана по ссылке. Поэтому вместо этого используйте другой метод API bindValue(), чтобы привязать ваши значения.

См. https://stackoverflow.com/a/14413428/476, для чего разница.

+0

Thaks, который решил проблему, теперь код выглядит красиво. –

Смежные вопросы