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

时间:2015-10-20 17:10:05

标签: php mysql session

我一直在用一些代码与一些代码进行战斗,而不是看到什么是错误的......

我有一个游戏网站我正在尝试构建新的角色表,表单已全部完成,该操作指向另一个页面,严格来说是用于将信息插入数据库的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;

当信息输入表格并提交时,我得到以下内容:

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.

我查看数据库,并将信息输入到帐户表中,以便该语句正常工作,但它挂在topdata表上。它没有回显$ _SESSION ['logname']并查看数据库,它没有保存所有者,应该是$ _SESSION ['logname'],所以我想知道这个语句现在是不是在某种程度上不正确?

我无法弄清楚到底是什么问题。任何和所有的帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

你错过了一个逗号:第二次插入SQL中的\"$_POST[web_site]\"\"$_POST[viewpw]\"

应为\"$_POST[web_site]\", \"$_POST[viewpw]\"

答案 1 :(得分:0)

首先,错误消息告诉您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值之间缺少逗号