我有这个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;
}
我已经搜索过了,我发现对象属性应该放在一个变量中以避免这个问题,但这样做会导致代码变得非常混乱和复杂。例如:
$name = $user->getName();
$this->query->bindParam(':name',$name);
还有其他方法可以解决这个问题吗?
答案 0 :(得分:2)
bindParam
期望一个通过引用传递的变量,而是给它一个函数返回的值,它不能通过引用传递。因此,请使用其他API方法bindValue()
来绑定您的值。
请参阅https://stackoverflow.com/a/14413428/476了解其中的差异。