猿问

PHP写的简单注册页面,就是检查数据库重复数据不不好使。求大神检查代码。以下是代码

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>登录、注册</title>
</head>

<body>
<form action="" method="post">
<table width="355" border="3" align="center">
<tr>
<td align="center" height="30">学生登记表</td>
</tr>
<tr>
<td align="center">姓名:<input type="text" name="user_name"></td>
</tr>
<tr>
<td align="center">学号:<input type="text" name="user_id"></td>
</tr>
<tr>
<td align="center">电话:<input type="text" name="user_phone"></td>
</tr>
<tr>
<td align="center">地址:<input type="text" name="user_address"></td>
</tr>
<tr>
<td align="center"><input type="submit" name="submit" value="提交"></td>
</tr>
<tr>
<td>
<a href="mysql_row.php" target="_blank">查看数据库</a>
</td>
</tr>
</table>
</form>
<?php
if(isset($_POST['submit'])){

$errot=array();
if(empty($_POST['user_id'])){
$errot[]='学号不能为空';
}else{
$user_id=$_POST['user_id'];
}
if(empty($_POST['user_name'])){
$errot[]='名字不能为空';
}else{
$user_name=$_POST['user_name'];
}
if(empty($_POST['user_phone'])){
$errot[]='电话不能为空';
}else{
$user_phone=$_POST['user_phone'];
}
if(empty($_POST['user_address'])){
$errot[]='名字不能为空';
}else{
$user_address=$_POST['user_address'];
}


if(empty($errot)){
header('Content-Type:text/html;charset=utf-8');
//数据库的服务器类型是mysql
$dbms='mysql';
//数据库服务器主机名、端口号、选择的数据库
$host='localhost';
$port='3306';
$dbname='book';
//用户名和密码
$user='root';
$pwd=null;
$dsn="$dbms:host=$host;port=$port;dbname=$dbname";
$options=array(PDO::MYSQL_ATTR_INIT_COMMAND=>"set names utf8");
try{
//实例化PDO创建数据库服务器连接
$pdo=new PDO($dsn,$user,$pwd,$options);
$sql1='select * from user where id='.$user_id;
//判断重复数据
$rs=$pdo->query($sql1);
var_dump($rs);
if($rs){
die('此数据重复提交');
}else{
//if(isset($_post['tijao'])){
//执行SQL语句
$sql="insert into user values(null,:name,:id,:phone,:address)";
//生成预处理语
$stmt=$pdo->prepare($sql);
// $name=$_POST['user_name'];
// $id=$_POST['user_id'];
// $phone=$_POST['user_phone'];
// $address=$_POST['user_address'];
$stmt->bindParam(":name",$user_name);
$stmt->bindParam(":id",$user_id);
$stmt->bindParam(":phone",$user_phone);
$stmt->bindParam(":address",$user_address);
if($stmt->execute()){
echo "成功..";

}else{
echo "失败";
}
}
}catch(PDOExcption $e){
echo $e->getMessage().'<br>';
}
}else{
var_dump($errot);
die("未填完!");
}

}
?>

<br/><br/>
</body>
</html>

小杨的样
浏览 1511回答 1
1回答

hallo_monde

这个一般不存在问题吧  账号 一般在数据库中 不是都是设置成unique 唯一的吗  就算你没有设置 直接一个sql语句  select name from 表名 where name = 传过来的值  如果这条sql语句返回真不就是存在该用户了吗
随时随地看视频慕课网APP
我要回答