PHP- PDO 只有变量应该通过引用传递

Fer*_*mos 3 php pdo

当我尝试在我的网站上注册时,会出现此错误 严格标准:仅应通过引用传递变量。你能看出我的代码有什么问题吗?

在此处输入图片说明

 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();

    }
Run Code Online (Sandbox Code Playgroud)

小智 5

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 ]]] )
Run Code Online (Sandbox Code Playgroud)

请注意,第二个变量是混合类型并通过引用传递。

在您的情况下,您正试图将一个函数传递给该变量。函数不能通过引用传递。

您需要更改代码以将它们视为类属性,或者需要在将它们传递给 bindParam 之前将它们设置为变量。

IE:

$userName = $user->getName();
$stmt->bindParam(':name', $userName);
Run Code Online (Sandbox Code Playgroud)

您也可以使用 bindValue:http ://us3.php.net/manual/en/pdostatement.bindvalue.php