新手半夜求解:Unknown column 'qq' in 'field list'怎么解决
这个是我自己练习的时候遇到的问题,新手,别笑话...
这个是建表的代码:
<?php
$con=@mysql_connect('localhost','root','123');
if($con)
{
mysql_select_db("employee",$con);
$sql="CREATE TABLE personal_data
(
id int(5) not null auto_increment primary key,
name char(10) not null,
qq char(16) not null,
tel char(14) not null,
email char(20) not null,
social_security char(22) not null,
postcode char(15) not null,
home_add char(26) not null,
home_tel char(14) not null,
residence_registration char(10) not null,
nation_place char(14) not null
)";
$do=mysql_query($sql,$con);
if($do)
{
echo "成功在employee数据库中创建用户表!";
}
else echo "建表有错误...";
}
else
{
echo "连接错误";
}
?>
因为分不是很清楚int 和 char 的区别,所以都是用 char 。
这个是deal的代码:
<?php
echo " <style type=\"text/css\">
<!--
body {color:#00099; font-size:10pt; text-align:center}
-->
</style>";
if($_POST)
{
$name=$_POST["name"];
$qq=$_POST["qq"];
$tel=$_POST["tel"];
$email=$_POST["email"];
$social_security=$_POST["social_security"];
$postcode=$_POST["postcode"];
$home_add=$_POST["home_add"];
$home_tel=$_POST["home_tel"];
$residence_registration=$_POST["residence_registration"];
$nation_place=$_POST["nation_place"];
$con=mysql_connect("localhost","root","123");
mysql_select_db("employee");
mysql_query("SET NAMES GB2312");
$sql="SELECT COUNT(*) FROM personal_data WHERE name='$name'";
$result=mysql_query($sql);
$num=mysql_fetch_row($result);
if($num[0]>0)
{
echo "存在同名用户,重新输入用户名!";
}
else
{
$sql="INSERT INTO staff_information(name,qq,tel,email,social_security,postcode,home_add,home_tel,residence_registration,nation_place) VALUES ('".$name."','".$qq."','".$tel."','".$email."','".$social_security."','".$postcode."','".$home_add."','".$home_tel."','".$residence_registration."','".$nation_place."')";
$re=mysql_query($sql)or die(mysql_error());
if($re) echo "成功插入记录!";
else echo "插入记录失败!";
echo "<p>";
}
}
else
{
echo "没有提交内容!<br>";
}
echo "<br>点<a href='reg0.php'>这里</a>返回";
?>
大学里的新手,研究了几个小时了,百度谷歌了好久都解决不了,希望有高手可以帮我,万分感谢。
[解决办法]
1.int 是整数类型 char 是字符类型 现在一般使用varchar
int:从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节
char 和varchar:CHAR列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。
VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值。(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)。
2.qq 这个字段在数据库里不存在
[解决办法]
CREATE TABLE personal_data(id int(5) not null auto_increment primary key,name char(10) not null,qq char(16) not null,tel char(14) not null,email char(20) not null,social_security char(22) not null,postcode char(15) not null,home_add char(26) not null,home_tel char(14) not null,residence_registration char(10) not null,nation_place char(14) not null)
[解决办法]
#1正解,char是规定字符大小,输入的内容只能是这么大;varchar可以在输入的字符大于规定字符时,自动增长。
提示中,显示你的qq字段有问题:
进入你的sql数据库中desc table_name看一下你建立的表达结构;
然后手动插入一条数据,看能否成功;
若成功,说明你的sql语句有问题,echo "sql-->>".$sql;看输出的语句是否正确;
将输出的$sql贴到你的数据库中看能否正常执行;
你的所有表字段都设的非空,那么在你的$_POST中就不能有空值。
[解决办法]