列数与第 1 行 php mysql 的值计数不匹配

Posted

技术标签:

【中文标题】列数与第 1 行 php mysql 的值计数不匹配【英文标题】:Column count doesn't match value count at row 1 php mysql 【发布时间】:2012-06-28 00:45:07 【问题描述】:

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

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 error: Column count doesn't match value count at row 1 的可能重复项 同样的错误信息,有些不同的原因。另一方面,您可以数列并查看问题;在这里,你看不到user_master表的列数(但你可以放心地预测列数不是4)。 【参考方案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)"

【讨论】:

以上是关于列数与第 1 行 php mysql 的值计数不匹配的主要内容,如果未能解决你的问题,请参考以下文章

PHP ~ 列数与第 1 行的值数不匹配

错误代码:1136。列数与第 1 行的值计数不匹配,我找不到错误

PHP 数组作为单独的行插入 MySQL 表

列计数与第 1 行的值计数不匹配 VendorError:1136

我的 php/mysqli 中出现错误和警告 [重复]

MySQL 抛出“java.sql.SQLException:列计数与第 1 行的值计数不匹配”[重复]