MySQL PDO错误:SQLSTATE [21S01]:插入值列表与列列表不匹配:1136列数与第1行的值计数不匹配

时间:2016-06-13 17:02:50

标签: php mysql pdo

我对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();

1 个答案:

答案 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 +值。