我对PHP PDO编程完全不熟悉,所以我只是在学习东西。 我从附加的代码中遇到以下错误,我已经盯着它几个小时了,只是看不出我的错误。
错误:SQLSTATE [21S01]:插入值列表与列列表不匹配:1136列数与第1行的值计数不匹配
我知道这告诉我,我在SQL语句中没有正确的列数,或者我将不正确数量的变量传递给execute()语句。但我不能为我的生活找到我的错误。
我需要另一双来自知识渊博的人的眼睛才能找到我的错误。
有人可以帮忙吗?
非常感谢, 杰夫
以下是代码:
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname",
$username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("INSERT INTO stagewishes
(id,wisher_name,description)
VALUES (:id,:name,:description,
(select
wishes.id,
wishers.name,
wishes.description
from wishes
left join wishers
on wishes.wisher_id = wishers.id
where wishes.wisher_id = '$search_desc'
order by wishes.id))");
$stmt->bindParam(":id",$v_id,PDO::PARAM_INT);
$stmt->bindParam(":name",$v_wishername,PDO::PARAM_STR);
$stmt->bindParam(":description",$v_description,PDO::PARAM_STR);
$stmt->execute();
答案 0 :(得分:0)
您的子查询将四个字段/值返回到仅允许 SINGLE 值的上下文中。
INSERT INTO stagewishes
(id,wisher_name,description)
1 2 3
VALUES (:id,:name,:description,(select ...)
1 2 3 4567...???
并且您的顶级插入内容已经指定了仅有三个字段的值,但您还是尝试填充4 +。
换句话说,请学习阅读错误消息:Column count doesn't match value count
:3列,4 +值。