【问题标题】:Trying to make PHP check for duplicates in data insert试图让 PHP 检查数据插入中的重复项
【发布时间】:2015-03-20 04:12:54
【问题描述】:

`

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");
}

?>`

到目前为止,我的数据库连接很好,当我到达 $doop 时

【问题讨论】:

  • 这到底有什么问题?你能包括你的错误信息和你的目标吗?
  • 只需让用户名列在数据库中唯一,并捕获错误
  • Daniel,如下面的答案所示,请确保在将数据放入查询之前清理任何用户输入(例如,通过使用 mysql_real_escape_string)。如果不这样做,您将受到简单但可能非常有害的 SQL 注入攻击。 xkcd.com/327

标签: php mysql select insert duplicates


【解决方案1】:
$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
 }

用户名周围缺少'

失踪;在 $doopquery 结束时

【讨论】:

  • 如果用户名是 Mike's Angel?
【解决方案2】:

这样做:

$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!";
  }
}

【讨论】:

  • 稍微解释一下会很有帮助。你改变了什么?这如何解决问题?
猜你喜欢
  • 2014-10-04
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多