试图让PHP检查数据插入中的重复项
` ?>` 到目前为止,我的数据库连接还不错,当我到达$doop时试图让PHP检查数据插入中的重复项,php,mysql,select,insert,duplicates,Php,Mysql,Select,Insert,Duplicates,` ?>` 到目前为止,我的数据库连接还不错,当我到达$doop时 mysql_connect("host","admin","password");//database connection mysql_select_db("dbname"); $order="INSERT INTO members (username, password) VALUES ('$_POST[username]','$_POST[password]')"; $doopquery = mysql_que
mysql_connect("host","admin","password");//database connection
mysql_select_db("dbname");
$order="INSERT INTO members (username, password) VALUES ('$_POST[username]','$_POST[password]')";
$doopquery = mysql_query("SELECT username FROM members WHERE username='$_POST[username]' ")
if ($doopquery) {
echo("Username Taken");
} else {
$result = mysql_query($order);
echo("Account Registered");
}
用户名周围缺少“标记”
失踪;在$doopquery结束时,按如下方式操作:
$username=mysql_real_escape_string($_POST['username']);
$doopquery = mysql_query("SELECT username FROM members WHERE username='$username' ");
if(mysql_num_rows($doopquery)==0){
//username not found
}
else{
//username already exists
}
这到底是怎么回事?您可以包括您的错误消息和您的目标吗?只需在数据库中使username列唯一,并捕获errorsDanel,如下面的答案所示,请确保在将数据放入查询之前清理任何用户输入(例如,使用mysql\u real\u escape\u string)。如果不这样做,您将受到一个简单但可能非常有害的SQL注入攻击。如果用户名是迈克的天使?一点解释会很有帮助。你改变了什么?这是如何解决问题的?
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$query = "SELECT username FROM members WHERE username='{$username}'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0) {
echo "Username Already Taken!";
}else{
$query = "INSERT INTO members (username, password) VALUES ('{$username}','{$password}')";
if(mysql_query($query)) {
echo "Account Registered!";
}else{
echo "Account Register Failed!";
}
}