PDO 插入错误(未定义参数)[重复]

Posted

技术标签:

【中文标题】PDO 插入错误(未定义参数)[重复]【英文标题】:PDO Insert error (Undefined parameter) [duplicate] 【发布时间】:2016-03-16 00:43:05 【问题描述】:

我正在处理一个小项目,但我似乎无法让我的 PDO 插入查询之一工作。 我收到错误消息:

php 致命错误:未捕获的 PDOException:SQLSTATE[HY093]:无效参数编号:参数未在 /home/photobay/public_html/friendcon/register.php:24 中定义

这是我的代码:

$datetime = htmlspecialchars(stripslashes(@$_POST['datetime']));
$fname = htmlspecialchars(stripslashes(ucfirst(@$_POST['first-name'])));
$lname = htmlspecialchars(stripslashes(ucfirst(@$_POST['last-name'])));
$email = htmlspecialchars(stripslashes(@$_POST['email']));
$password = htmlspecialchars(stripslashes(@$_POST['password']));
$gender = htmlspecialchars(stripslashes(@$_POST['gender']));

$password = password_hash($password, PASSWORD_BCRYPT);

$stmt = $db->prepare("INSERT INTO `users` (`id`, `first-name`, `last-name`, `email`, `password`, `gender`, `datetime`) VALUES (:id, :first-name, :last-name, :email, :password, :gender, :datetime)");


$stmt->execute(array(
  ':id' => null,
  ':first-name' => $fname,
  ':last-name' => $lname,
  ':email' => $email,
  ':password' => $password,
  ':gender' => $gender,
  ':datetime' => $datetime

));

$insertId = $db->lastInsertId();

我检查过所有参数都在里面,我的数据库中有 7 个字段,并且定义了 7 个参数。

我迷路了,我不知道出了什么问题。 注意:我是 PDO 的初学者,如果有帮助,我正在使用 PHP 7

【问题讨论】:

您可以尝试将您的参数重命名为firstnamelastname - 我不确定您是否可以在占位符名称中使用连字符。 【参考方案1】:

尝试将:first-name:last-name 重命名为:firstname:lastname:first_name:last_name,看看是否有效。

【讨论】:

以上是关于PDO 插入错误(未定义参数)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP PDO 通过未定义的索引错误获取

多重通知:调用函数时出现未定义的变量错误[重复]

使用 PDO SQL INSERT INTO 的 PHPunit 测试函数未定义数组键错误

调用未定义的方法 PDO::real_escape_string()

“无效参数编号:未定义参数” 插入数据

使用phpmyadmin导入数据库后出错:未定义属性:PDO :: $ connect_error