【问题标题】:Column count doesn't match value count at row 1 php mysql列数与第 1 行 php mysql 的值计数不匹配
【发布时间】:2023-03-07 18:21:01
【问题描述】:

单击“广告记录”按钮时出现以下错误:

INSERT 失败:INSERT INTO user_master VALUES('cha' , 'rstein' , 'bar' , 'foo') 列数与第 1 行的值数不匹配

来自以下代码:

    if (isset($_POST['delete']) && isset($_POST['first']))
{
    $first = get_post('first');
    $query = "DELETE FROM user_master WHERE first='$first'";
    if(!mysql_query($query, $db_server))
        echo "DELETE failed: $query<br />" . 
        mysql_error() . "<br /><br />";
}

if (isset($_POST['first']) && isset($_POST['last']) && isset($_POST['user_name']) && isset($_POST['email']))
{
    $first      = get_post('first');
    $last       = get_post('last');
    $email      = get_post('email');
    $user_name  = get_post('user_name');

    $query = "INSERT INTO user_master VALUES" . "('$first' , '$last' , '$user_name' , '$email')";

    if(!mysql_query($query, $db_server)) echo "INSERT failed: $query <br />" . mysql_error() . "<br /><br />";
}

echo <<<END
<form action = "willingLog.html" method="post"><pre>
    First       <input type="text" name="first" />
    Last        <input type="text" name="last" />
    Email       <input type="text" name="email" />
    Username    <input type="text" name="user_name" />
            <input type="submit" value="AD RECORD" />
</pre></form>
    END;

【问题讨论】:

标签: php mysql sql insert


【解决方案1】:

您的数据库表的列比您要插入的列多,因此您会遇到错误。 (您可能不代表您的用户 ID 字段,这可能是您的主键)。您需要在查询中指定数据用于哪些字段:

 $query = "INSERT INTO user_master (first_name, last_name, user_name, email) VALUES" . "('$first' , '$last' , '$user_name' , '$email')";

【讨论】:

  • 非常感谢您的回答。是的,我没有使用一个 id 字段,因为我认为它会自动递增。但是,我不明白你答案的最后一部分。你能详细说明一下吗?非常感谢。
【解决方案2】:

如果您的user_master 表有任何主键,例如iduser_id,那么您可以做两件事:

  • 您可以在“id”字段上添加 auto_increment 属性
  • 为“id”添加主值。

【讨论】:

  • user_master 表有一个 id 字段,它设置为自动递增。
  • 是的我也是...那么解决方案如何?因为我所有的表都使用同名的主键:“id”:
【解决方案3】:

我遇到了同样的问题...我解决它的方法是确保不要在我的整数值中放置逗号

因此,如果您在 html 表单中输入薪水,请不要在薪水数字中使用逗号。 (我按照教程点给出的例子。我认为工资框应该包含一个逗号,但它导致了这个错误。)

【讨论】:

    【解决方案4】:

    确保您的 sql 查询在开始和结束括号附近没有空格。下面会导致你提到的错误:

    $sql = "INSERT INTO table_name ( email, username ) VALUES ($userEmail,$username)"
    

    【讨论】:

      猜你喜欢
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-24
      相关资源
      最近更新 更多