2014-06-19 39 views
0

我正在使用PHP PDO插入到使用PHP的MYSQL數據庫中。我得到的錯誤:致命錯誤:使用PHP和MYSQL時無法通過引用傳遞參數2

Fatal error: Cannot pass parameter 2 by reference in /home/sandyit/public_html/hosting/findibuzz/design2/sign-up.php on line 200

這是我的代碼:

$ ID是一個自動遞增的整數,而其餘的varchar變量如下填寫爲例:

$db = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', 'dbusername', 'dbpass'); 

$FULLNAME = "David"; 
$PW_HASH = "sadsad"; 
$SALT = "adadad"; 
$EMAIL_ADDRESS = "[email protected]"; 


$ID=0; 
$addrequest = $db->prepare("INSERT INTO FB_USERS (ID,FULL_NAME,PASSWORD,PASSWORD_SALT,EMAIL_ADDRESS) VALUES (:ID,:FULL_NAME,:PASSWORD,:PASSWORD_SALT,:EMAIL_ADDRESS)"); 
$addrequest->bindParam(':ID',$ID, PDO::PARAM_INT); 
$addrequest->bindParam(':FULL_NAME',$FULL_NAME, PDO::PARAM_STR); 
$addrequest->bindParam(':PASSWORD',$PW_HASH, PDO::PARAM_STR); 
$addrequest->bindParam(':PASSWORD_SALT',$SALT, PDO::PARAM_STR); 
$addrequest->bindParam(':EMAIL_ADDRESS',$EMAIL_ADDRESS, PDO::PARAM_STR); 
$addrequest->execute(); 
$addrequest->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

我知道我有什麼問題,但是我不能發現錯誤,請問我有什麼建議嗎?

感謝

+0

在連接打開後立即添加'$ db-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);'。 –

+0

[PHP錯誤:「無法通過引用傳遞參數2」的可能重複](https://stackoverflow.com/questions/13105373/php-error-cannot-pass-parameter-2-by-reference) –

回答

2

刪除引號僅供參考。我知道這不會幫助解決你的問題,但你可以做這樣的事情(見下面的代碼),以達到相同的結果:

$db = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', 'dbusername', 'dbpass'); 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$sql = "INSERT INTO FB_USERS (FULL_NAME,PASSWORD,PASSWORD_SALT,EMAIL_ADDRESS) 
     VALUES (:FULL_NAME,:PASSWORD,:PASSWORD_SALT,:EMAIL_ADDRESS)"; 
$stmt = $db->prepare($sql); 
$params = array 
(
    'FULL_NAME'=>'David', 
    'PASSWORD'=>'sadsad', 
    'PASSWORD_SALT'=>'adadad', 
    'EMAIL_ADDRESS'=>'[email protected]' 
); 
$stmt->execute($params) 

我發現很容易與陣列工作,而不是僅僅把它傳遞給陳述。 但我猜它只是一個味道。 就像我說的這只是供參考,並不會幫助你解決你的問題。

2

'$ID'

$addrequest->bindParam(':ID',$ID, PDO::PARAM_INT); 
+0

不確定但是我想他可以從':ID'中刪除':' – Sebastien

+1

@Sebastien':'是可選的。 –

+0

@ Fred-ii-謝謝!不知道。 – Sebastien

相關問題