我对 PHP PDO 编程来说确实是全新的,所以我只是在学习东西。 我在所附代码中遇到了以下错误,我已经盯着它看了几个小时,但就是看不到我的错误。
Error: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 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();
最佳答案
您的子查询正在将四个字段/值返回到仅允许单个值的上下文中。
INSERT INTO stagewishes
(id,wisher_name,description)
1 2 3
VALUES (:id,:name,:description,(select ...)
1 2 3 4567...???
并且您的顶级插入已经指定了仅三个字段的值,但您却试图填充 4+。
换句话说,学会阅读错误消息:列计数与值计数不匹配
:3 列,4 个以上值。
关于php - MySQL PDO 错误 : SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37795371/