首页 > 解决方案 > 不能通过引用传递参数

问题描述

我正在尝试为我正在从事的项目制作 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();

标签: phpmysqli

解决方案


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

推荐阅读