亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法通過引用傳遞參數

無法通過引用傳遞參數

PHP
鴻蒙傳說 2023-09-22 16:12:04
我正在嘗試為我正在開發的項目制作 PHP 安裝程序。當我點擊安裝程序上的提交按鈕時,會導致顯示此錯誤:致命錯誤:未捕獲錯誤:無法通過引用傳遞參數 2。代碼:$stmt = $db->prepare("INSERT INTO `users` (`user_id`, `email`, `password`, `name`, `token_code`, `email_activation_code`, `lost_password_code`, `facebook_id`, `type`, `active`, `language`, `date`, `ip`, `last_activity`, `last_user_agent`, `total_logins`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");$stmt->bind_param("ssssssssssssssss", '1', $adminEmail, $adminPass, $adminUsername, '', '', '', '', '1', '1', 'english',);$adminEmail = $_POST['admin-email'];$adminUsername = $_POST['admin-username'];$adminPass = password_hash($_POST['admin-password'], PASSWORD_DEFAULT);$stmt->execute();
查看完整描述

2 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

問題就在這里,因為bind_param()要求它的所有參數都通過引用傳遞(第一個參數除外,它是控制字符串)。


$stmt->bind_param("ssssssssssssssss", '1', $adminEmail, $adminPass, $adminUsername, 

  '', '', '', '', '1', '1', 'english',);

像這樣的字符串文字'1'不是左值,因此它們不能通過引用傳遞。


您可以這樣修復它:


$one = '1';

$blank = '';

$english = 'english';


$stmt->bind_param("ssssssssssssssss", $one, $adminEmail, $adminPass, $adminUsername, 

  $blank, $blank, $blank, $blank, $one, $one, $english);

如果是我,我會使用 PDO 而不是 mysqli。PDO 有一種更簡單的傳遞參數的方法。無需綁定步驟。只需作為數組傳遞給execute(),這接受非左值:


$stmt = $pdo->prepare(...);

$stmt->execute([

  '1', $adminEmail, $adminPass, $adminUsername, '', '', '', '1', '1', 'english'

]);


查看完整回答
反對 回復 2023-09-22
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

Bind_param 只接受變量,不接受 '' 或 '1'


所以定義一個變量并將其添加到bind_param,


$stmt = $db->prepare("INSERT INTO `users` (`user_id`, `email`, `password`, `name`, `token_code`, `email_activation_code`, `lost_password_code`, `facebook_id`, `type`, `active`, `language`, `date`, `ip`, `last_activity`, `last_user_agent`, `total_logins`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

$emptvar = '';

$one = '1';

$language = 'english';

$stmt->bind_param("ssssssssssssssss", $one, $adminEmail, $adminPass, $adminUsername, $emptvar , $emptvar , $emptvar , $emptvar , $one, $one, $language,);


$adminEmail = $_POST['admin-email'];

$adminUsername = $_POST['admin-username'];

$adminPass = password_hash($_POST['admin-password'], PASSWORD_DEFAULT);

$stmt->execute();


查看完整回答
反對 回復 2023-09-22
  • 2 回答
  • 0 關注
  • 126 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號