Mysql SQL准备失败:(1136)列计数不';不匹配第1行的值计数

Mysql SQL准备失败:(1136)列计数不';不匹配第1行的值计数,mysql,sql-server,Mysql,Sql Server,我的SQL查询出现1136错误。 您可以在下面看到我的查询。由于第一条if语句,会弹出错误。我的表中的第一列是ID字段,但它被设置为auto_increment。所以这不应该是问题的原因,对吗? 谁能告诉我我把事情搞砸了吗 function CreateNewItem($titelNL, $titelEN, $technieken, $jaar, $yt, $beschrijvingNL, $description, $user) { $sql = "INSERT INT

我的SQL查询出现1136错误。 您可以在下面看到我的查询。由于第一条if语句,会弹出错误。我的表中的第一列是ID字段,但它被设置为auto_increment。所以这不应该是问题的原因,对吗? 谁能告诉我我把事情搞砸了吗

function CreateNewItem($titelNL, $titelEN, $technieken, $jaar, $yt, $beschrijvingNL, $description, $user)
    {
        $sql = "INSERT INTO portfolioItem (titel_nl, beschrijving_nl, leerjaar, datum, auteur_id, technieken, titel_en, beschrijving_en, youtubeLink)
                    VALUES ( ?, ?, ?, DATE_ADD(NOW(), INTERVAL 2 HOUR), ?, ?, ?, ?)";

        $databaseConn = $this->connect();

        if (!($stmt = $databaseConn->prepare($sql))) {
            echo "Prepare failed: (" . $databaseConn->errno . ") " . $databaseConn->error;
            return;
        }
        if (!$stmt->bind_param("ssiissss", $titelNL, $beschrijvingNL, $jaar, $user->id, $technieken, $titelEN, $description, $yt)) {
            echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
            return;
        }   
        if (!$stmt->execute()) {
            echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
            return;
        }
        $id = $stmt->insert_ID;
        $stmt->close();
        $this->closeConnection();
        return $id;
    }

INSERT语句引用了九列,但只有八个值

这就是MySQL抛出语法错误的原因

查看所提供的绑定值,值中似乎缺少一个“逗号问号”

  , $titelNL                      // bind v1
  , $beschrijvingNL               // bind v2 
  , $jaar                         // bind v3
                                  //      v4 is a literal 
  , $user->id                     // bind v5
  , $technieken                   // bind v6
  , $titelEN                      // bind v7
  , $description                  // bind v8
  , $yt                           // bind v9

您的查询中有9个字段,但只有8个值。您在谈论“基准”字段吗?因为我用DATE_ADD方法来填写。还是最好为它创建一个变量,并在bind_param方法中将其作为参数传递?不要在insert语句中包含
auto_increment
列。@YusufHassan目前不包括该列。这就是我在这个问题上困惑的地方。错误是我没有为第一列传递值,但我甚至没有在第一列中插入任何内容。我现在觉得自己太愚蠢了,我已经计算了十几次字段和列,但仍然搞砸了。谢谢你指点out@JoshuaVolkers:美元到甜甜圈我打赌你在数逗号,并且在DATE\u ADD函数中数逗号。我个人的偏好是指定
NOW()+间隔2小时
来代替
DATE\u ADD(NOW(),间隔2小时)
。并在单独的行中列出每列和每个值。是的,时间变长了。但是它比向右滚动阅读一长行SQLI要容易得多,可能只是使用相同的方法在不同的行上键入它。使阅读体验更轻松,尤其是当你已经阅读了几个小时的时候。
  , $titelNL                      // bind v1
  , $beschrijvingNL               // bind v2 
  , $jaar                         // bind v3
                                  //      v4 is a literal 
  , $user->id                     // bind v5
  , $technieken                   // bind v6
  , $titelEN                      // bind v7
  , $description                  // bind v8
  , $yt                           // bind v9