这个是我自己练习的时候遇到的问题,新手,别笑话...这个是建表的代码:
<?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.   

    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 这个字段在数据库里不存在
      

  2.   

    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
    )楼主检查下是不是字段的类型给错了、
      

  3.   

    #1正解,char是规定字符大小,输入的内容只能是这么大;varchar可以在输入的字符大于规定字符时,自动增长。
    提示中,显示你的qq字段有问题:
    进入你的sql数据库中desc table_name看一下你建立的表达结构;
    然后手动插入一条数据,看能否成功;
    若成功,说明你的sql语句有问题,echo "sql-->>".$sql;看输出的语句是否正确;
    将输出的$sql贴到你的数据库中看能否正常执行;
    你的所有表字段都设的非空,那么在你的$_POST中就不能有空值。
      

  4.   

    检查是不是staff_information表里面没有qq,
      

  5.   

    结贴了,非常感谢...  
    仔细看了一下SQL语句,发现是#5楼说对了,是表名打错了,因为建表的时候偷懒,把上一次建表的代码修改了一下就用过来了。