当我尝试在我的网站上注册时,出现此错误严格标准:只应通过引用传递变量。你能看出我的代码有什么问题吗?
public static function create(user $user){
$conn= DataBase::getDB();
$stmt=$conn->prepare("INSERT INTO `institute`.`user` (`id`, `name`, `surname`, `username`, `password`, `email`, `registration_number`) "
. "VALUES ('', :name, :surname, :username, :password, :email, :registration_number)");
$stmt->bindParam(':name', $user->getName());
$stmt->bindParam(':surname', $user->getSurname());
$stmt->bindParam(':username', $user->getUsername());
$stmt->bindParam(':password', $user->getpassword());
$stmt->bindParam(':email', $user->getEmail());
$stmt->bindParam(':registration_number', $user->getRegistration_number());
$stmt->execute();
}
答案 0 :(得分:2)
http://us3.php.net/manual/en/pdostatement.bindparam.php
public bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )
请注意,第二个变量的类型为mixed,并通过引用传递。
在您的情况下,您尝试将函数传递给该变量。函数不能通过引用传递。
您需要更改代码以将其视为类属性,或者在将它们传递给bindParam之前需要将它们设置为变量。
IE:
$userName = $user->getName();
$stmt->bindParam(':name', $userName);
您也可以使用bindValue: http://us3.php.net/manual/en/pdostatement.bindvalue.php
答案 1 :(得分:0)
bindParam()
$username = $user->getName();
$stmt->bindParam(':name', $username);
bindValue()
$stmt->bindValue(':name', $user->getName());