php - 致命错误:未捕获的 PDOException:SQLSTATE[HY093]:无效参数号:未绑定参数
问题描述
我有一个问题两天没能解决。我是 PDO 的新手。这是我得到的错误:
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in C:\xampp\htdocs\karton_ljubimca\admin\dist\includes\connection.php:38 Stack trace: #0 C:\xampp\htdocs\karton_ljubimca\admin\dist\includes\connection.php(38): PDOStatement->execute() #1 C:\xampp\htdocs\karton_ljubimca\admin\dist\forgotten_password.php(42): Connection->execute() #2 {main} thrown in C:\xampp\htdocs\karton_ljubimca\admin\dist\includes\connection.php on line 38
我的代码来自 forget_password.php:
$rec_email = $_POST['recovery_email'];
$token = bin2hex(random_bytes(20));
$user_role = $_SESSION['user_role'];
if ($_SESSION['user_role'] == 'vlasnik') {
$column = 'email_vlasnika';
}
if ($_SESSION['user_role'] == 'veterinarska_ustanova') {
$column = 'email_vet_ustanove';
}
if ($_SESSION['user_role'] == 'admin') {
$column = 'email_admina';
}
$sql = "UPDATE :user_role SET reset_password_token = :reset_password_token WHERE :column = email";
$conn->bind_value(':user_role', $user_role, PDO::PARAM_STR);
$conn->bind_value(':reset_password_token', $token, PDO::PARAM_STR);
$conn->bind_value(':column', $column, PDO::PARAM_STR);
$conn->bind_value(':email', $rec_email, PDO::PARAM_STR);
$conn->query_prepare($sql);
$conn->execute();
这是来自 Connection 类的 bind_value() 方法:
public function bind_value($param, $value, $type) {
return $this->stmt->bindValue($param, $value, $type);
}
你能解释一下我做错了什么吗?
更新: 将代码更改为:
$sql = "UPDATE ".$user_role." SET reset_password_token = :reset_password_token WHERE " . $column . " = :email";
$conn->query_prepare($sql);
$conn->bind_value(':reset_password_token', $token, PDO::PARAM_STR);
$conn->bind_value(':email', $rec_email, PDO::PARAM_STR);
$conn->execute();
它正在工作。谢谢大家
解决方案
推荐阅读
- excel - excel vba循环遍历行并输出到新工作表
- css - 试图让 CSS 网格布局正确
- python - 如何获取列表中所有相同元素的索引?
- css - 边框没有对齐
- javascript - Express API 不会接受来自 POSTMAN 的任何请求
- google-sheets - 如何在谷歌表格中拖动公式?
- linux - 在 Alpine Linux 容器上安装 Flutter 无法“发布升级”
- awk - 当发现重复时打印整行
- angular - 无法在“URL”上执行“createObjectURL”:使用 npm 文件保护程序进行重载解析失败
- django - Django 表单和引导程序 - 添加小部件有效但不完全