2015-11-17 50 views
0

當我嘗試在我的網站上註冊時出現此錯誤嚴格標準:只有變量應該通過引用傳遞。你能看到我的代碼有什麼問題嗎?PHP-PDO只有變量應通過引用傳遞

enter image description here

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

    } 
+1

簡單,'bindParam()'第二arg是一個參考。你傳遞一個方法結果。你可能想'bindValue()'http://php.net/manual/en/pdostatement.bindvalue.php – AbraCadaver

回答

1

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 ]]]) 

通知所述第二變量的類型的混合,並通過引用傳遞。

在你的情況下,你正試圖將一個函數傳遞給該變量。函數不能通過引用傳遞。

您將需要更改您的代碼,以將它們視爲類屬性,或者在將它們傳遞給bindParam之前,需要將它們設置爲變量。

IE:

$userName = $user->getName(); 
$stmt->bindParam(':name', $userName); 

可以,另外,使用bindValue: http://us3.php.net/manual/en/pdostatement.bindvalue.php

+0

非常感謝你:) –

相關問題