我一直在用一些代码与一些代码进行战斗,而不是看到什么是错误的......
我有一个游戏网站我正在尝试构建新的角色表,表单已全部完成,该操作指向另一个页面,严格来说是用于将信息插入数据库的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'],所以我想知道这个语句现在是不是在某种程度上不正确?
我无法弄清楚到底是什么问题。任何和所有的帮助将不胜感激。
答案 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值之间缺少逗号