0

对不起,我真的很愚蠢的问题。(我在这方面很新!)。

我有一个查询(mysql,编程语言是php):

mysql_query("INSERT INTO user (id, f_name, l_name, email, user_name, password, b_day, gender, country, p_number, address, active)
VALUES ('NULL', '$_POST[fname]', '$_POST[lname]', '$_POST[email]', '$_POST[username]', '$_POST[password]', '$_POST[bday]', '$gender', '$_POST[country]', '$_POST[phone]', 'address', '0')")


or die("The username already exist");

我需要对其应用一些条件,比如......

if (mysql_query done inserting successfully){
// do 1-
// 2-
// 3-
// 4-
}

else {die("The username already exist");
//and do 
// 1-
// 2-
// 3-
// 4-

}

顺便说一句,我在 mysql 数据库中将用户名设置为唯一的,因此如果有人想插入类似的东西并且我将其捕获为用户已经存在,则会给出错误。

我怎样才能做到这一点?

4

3 回答 3

1

如果您在 MySQL 中遇到唯一键约束,它将抛出一个错误,导致 PHP 抛出一个错误,然后显示在您的日志中,这意味着您忘记在代码中执行某些操作。在尝试 INSERT 语句之前,您应该执行单独的 SELECT 查询以确定用户是否已经存在(验证)。

于 2012-10-03T01:31:15.897 回答
1

不鼓励使用 mysql_* 函数。你应该学习使用 MySqli 或 PDO。不过,我只会回答你的问题。

$qry = mysql_query("...");
if ($qry)
{
    //do 1-2-3-4
}
else
{
    //did not insert
}

在插入任何内容之前,您可以进行查询检查用户是否已经存在。

您应该对那些 $_POSTS 进行消毒和清洁。

于 2012-10-03T01:37:22.680 回答
1

如果要查找用户名是否存在,需要事先做一个select语句

SELECT * FROM user WHERE username = 'xxx'

运行该查询后,通过使用 mysql_num_rows(或 mysqli_num_rows)计算返回的行数来检查用户名是否存在。

$result = mysql_query("SELECT * FROM user WHERE username = 'xxx'", $link);
$num_rows = mysql_num_rows($result);
if ($num_rows == 0) {
    mysql_query("INSERT INTO user (id,f_name,l_name,email,user_name,password,b_day,gender,country,p_number,address,active) VALUES ('NULL','$_POST[fname]','$_POST[lname]','$_POST[email]','$_POST[username]','$_POST[password]','$_POST[bday]','$gender','$_POST[country]','$_POST[phone]','address','0')")
} else {
    die("The username already exist");
}

建议:

  • 使用 mysqli 而不是 mysql
  • 使用 mysqli_real_escape_string (http://www.php.net/manual/en/mysqli.real-escape-string.php) 转义要插入数据库的输入
于 2012-10-03T01:38:13.833 回答