提交表单时,列计数与第1行上的值计数不匹配


Column count doesn't match value count at row 1 when submitting a form

我已经和一些代码战斗了一个星期了,没有看到到底是什么错…

我有一个游戏网站,我试图建立新的字符表,形式都完成了,动作指向另一个页面,这是严格的sql插入信息到数据库中。我们有良好的连接,但它挂在第二个插入语句。代码以前是可以工作的,但是我们必须删除数据库并重新构建它,从而重新构建插入sql行。

插入代码的第一部分是:
if($_POST['Submit']=="Submit")
{
$sql="INSERT INTO accounts (log_name,owner,account_type,date_joined) VALUES ('"$_POST[char_name]'",'"$_SESSION[logname]'",'"$_POST[account_type]'",NOW())";
$result = mysql_query($sql) 
        or die("<p>Couldn't add character.<br/>".mysql_error()." in accounts.<br/>Please send this exact message to <a href='mailto:savvannis@houston-by-night.com'>Savvannis</a> with your character's name.</p>");
        echo $result;
echo $_SESSION['logname'];
$sql="INSERT INTO topdata (log_name,char_venue,sub_venue,species,char_name,create_date,gender,age,appage,nature,demeanor,concept,description,web_site,view_pword,sfa) VALUES ('"$_SESSION[logname]'",'"$_POST[char_venue]'",'"$_POST[sub_venue]'",'"$_POST[species]'",'"$_POST[char_name]'",NOW(),'"$_POST[gender]'",'"$_POST[age]'",'"$_POST[appage]'",'"$_POST[nature]'",'"$_POST[demeanor]'",'"$_POST[concept]'",'"$_POST[description]'",'"$_POST[web_site]'"'"$_POST[viewpw]'",'"$_POST[sfa]'")";
$result=mysql_query($sql)
       or die ("<p>Could not create character.<br/>".mysql_error()." in topdata.<br/>Please send this exact message to <a href='mailto:savvannis@houston-by-night.com'>Savvannis</a> with your character's name.</p>");
        echo $result;

当信息输入到表单中并点击submit时,我得到以下内容:

1
Could not create character.
Column count doesn't match value count at row 1 in topdata.
Please send this exact message to Savvannis with your character's name.

我查看数据库并将信息输入到accounts表中,因此该语句正在工作,但它在topdata表上挂起。它不呼应$_SESSION['logname']和查看数据库,它不保存所有者,这应该是$_SESSION['logname'],所以我想知道如果该声明现在是不正确的??

我不知道到底是哪里出了问题。

您在第二次插入SQL中遗漏了一个逗号:'"$_POST[web_site]'"'"$_POST[viewpw]'"

应该是'"$_POST[web_site]'", '"$_POST[viewpw]'"

首先,错误消息告诉您SQL中列和值的数量不相等

让我们看一下

INSERT INTO topdata (
log_name,
char_venue,
sub_venue,
species,
char_name,
create_date,
gender,
age,
appage,
nature,
demeanor,
concept,
description,
web_site,
view_pword,
sfa
) VALUES (
'"$_SESSION[logname]'",
'"$_POST[char_venue]'",
'"$_POST[sub_venue]'",
'"$_POST[species]'",
'"$_POST[char_name]'",
NOW(),
'"$_POST[gender]'",
'"$_POST[age]'",
'"$_POST[appage]'",
'"$_POST[nature]'",
'"$_POST[demeanor]'",
'"$_POST[concept]'",
'"$_POST[description]'",
'"$_POST[web_site]'"'"$_POST[viewpw]'",
'"$_POST[sfa]'"
)";

现在通过格式化你的SQL(这是容易受到SQL注入),我注意到web_site和viewpw值之间缺少逗号