几个月之前写过的php现在也已经忘得差不多了,本来就不会多少,现在更是错误百出了。
今天写了一个用户注册的界面,其他部分暂时不写,之贴出其中body部分
<body>
<div class="container">
<?php include('lib/header.php'); ?>
<div>
<table width="500" height="430" border="0" cellspacing="0" cellpadding="0">
<form action="register_data.php">
<thead>
<tr>
<th colspan="3">用户注册</th>
</tr>
</thead>
<tbody>
<tr>
<td width="84">用户名:</td>
<td width="200"><input type="text" id="username" name="username" /></td>
<td width="216"><span class="require">(*)</td>
</tr>
<tr>
<td width="84">密码:</td>
<td width="200"><input type="password" id="password" name="password" /></td>
<td width="216"><span class="require">(*)</td>
</tr>
<tr>
<td width="84">姓名:</td>
<td width="200"><input type="text" id="realname" name="realname" /></td>
<td width="216"><span class="require">(*)</span>请填写您的真实姓名</td>
</tr>
<tr>
<td>联系电话:</td>
<td><input type="text" id="phone" name="phone" /></td>
<td><span class="require">(*)</span></td>
</tr>
<tr>
<td>身份证号:</td>
<td><input type="text" id="identification" name="identification" /></td>
<td><span class="require">(*)</span></td>
</tr>
<tr>
<td>电子邮箱:</td>
<td><input type="text" id="email" name="email" /></td>
<td> </td>
</tr>
<tr>
<td colspan="3"><p style="color:#999">您的个人信息我们会妥善保管,不会泄露给第三方,请放心填写</p></td>
</tr>
<tr>
<td colspan="3">
<label>
<input type="checkbox" id="agree" />
我同意使用条款
</label>
</td>
</tr>
<tr>
<td colspan="3">
<input type="submit" value="提交申请">
</td>
</tr>
</tbody>
</form>
</table>
</div>
</div>
</body>
数据库操作部分文件如下:
<?php
include "../lib/connect.php";
$name = $_POST["username"];
$password = $_POST["password"];
$realname = $_POST["realname"];
$phone = $_POST["phone"];
$identification = $_POST["identification"];
$email = $_POST["email"];
$sql = "INSERT INTO `cloudmedia`.`pc_customer` (`username`,`password`,`realname`,`phone`,`identification`,`email`)
VALUES ('$name','$password','$realname','$phone','$identification','$email')";
if (mysql_query($sql))
{
header("Location:index.php?msg=insert_success");
exit;
}
else
{
header("Location:index.php?msg=insert_error");
exit;
}
mysql_close($conn);
?>
一直觉得自己的代码还算整齐,可是插入数据库一直不成功,能够返回insert_success的信息,但是数据苦中数据为空。我做了如下检查:
1. 将代码中的
INSERT INTO `cloudmedia`.`pc_customer` (`username`,`password`,`realname`,`phone`,`identification`,`email`)
VALUES ('$name','$password','$realname','$phone','$identification','$email')
在数据库中直接执行,发现可以执行。
2. 检查数据库连接语句,发现数据库名字不同,我突然发现自己真的很粗心,然后改过来。本以为这样就可以成功了,但是还是之前那样的问题。于是开始求助百度,直到看到一位前辈提醒,将$sql打印出来,放入数据库中执行。我一直觉得,这跟我第一步的操作不是一样的么?一直都没有这么试过,但是现在就死马当活马医吧,于是在表单中输入数据提交后,发现页面上打印出来的$sql居然后面跟的数据是空的,也就是:
INSERT INTO `cloudmedia`.`pc_customer` (`username`,`password`,`realname`,`phone`,`identification`,`email`) VALUES ('','','','','','')
居然没有数据传过来.....
原来在form表单中我没有加入method=”post“
原来自己真的好粗心啊,编程序这个事情一定要仔细,而且要一点点排查,不错过任何的可能性。以此告诫自己。