【问题标题】:Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]:带有消息“SQLSTATE [HY093]”的未捕获异常“PDOException”:
【发布时间】:2014-02-25 10:38:46
【问题描述】:
<?php
include('connect.php'); 
$date = $_POST['date'];
$student_ID = $_POST['student_ID'];
$full_name = $_POST['full_name'];
$year_section = $_POST['year_section'];
$payment_description = $_POST['payment_description'];
$amount = $_POST['amount'];
$received_by = $_POST['received_by'];

// query
$sql = "INSERT INTO transaction (date,student_ID,full_name,year_section,payment_description,amount,received_by) VALUES (:sas,:asas,:asafs,:offff,:statttt,:dot,:rd,:ft)";
$q = $db->prepare($sql);
$q>execute(array(':sas'=>$date,':asas'=>$student_ID,':asafs'=>$full_name,':offff'=>$year_section,':statttt'=>$payment_description,':dot'=>$amount,':rd'=>$received_by));
header("location: index.php");
?>

我收到以下错误:

致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[HY093]:无效的参数号:绑定变量的数量 与中的令牌数不匹配 C:\xampp\htdocs\recordmanagement\main\reg.php:15 堆栈跟踪:#0 C:\xampp\htdocs\recordmanagement\main\reg.php(15): PDOStatement->execute(Array) #1 {main} 抛出 C:\xampp\htdocs\recordmanagement\main\reg.php 在第 15 行

在代码中我也不确定这些值的含义:

 (:sas,:asas,:asafs,:offff,:statttt,:dot,:rd,:ft);

我是从源码下载的,所以不是我写的。

【问题讨论】:

  • @Alex K。为什么这个问题变成了社区维基?
  • 这个问题变成了一个社区维基,因为评论者和建议编辑的人都没有做他们应该做的事情。在帖子变得足够好之前需要 12 次修改,这应该只用 1 次就可以完成。一篇帖子在 10 次修改后成为社区 wiki。
  • @JeroenVannevel 我明白了。我不知道帖子经过一定数量的修改后变成了 wiki。感谢您的澄清。

标签: sql database


【解决方案1】:

查询中似乎有一个字段太多。这个:

$sql = "INSERT INTO transaction 
(date,student_ID,full_name,year_section,payment_description,amount,received_by) 
VALUES (:sas,:asas,:asafs,:offff,:statttt,:dot,:rd,:ft)";

应该是:

$sql = "INSERT INTO transaction 
(date,student_ID,full_name,year_section,payment_description,amount,received_by) 
VALUES (:sas,:asas,:asafs,:offff,:statttt,:dot,:rd)";

因为:ft 字段没有匹配值。

这是因为您在值中缺少一个项目,还是不需要它,我不能说。

【讨论】:

  • 非常感谢! :) 你能告诉我这些代码的含义是什么吗? (:sas,:asas,:asafs,:offff,:statttt,:dot,:rd)";
  • @user3350719 我认为它们只是占位符,用于指示在随后的执行中应将哪些项目替换为数据。
  • 这些是后期变量绑定。首先,您必须指出查询中使用了哪些变量(VALUES(...)),然后绑定变量的实际值(execute(array(...)))。当然,变量的数量和类型都必须与要插入数据的表中的值相匹配。
猜你喜欢
  • 1970-01-01
  • 2016-09-07
  • 2012-07-08
  • 2014-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多