簡體   English   中英

在php中的mysql_query上應用條件

[英]Apply condition on mysql_query in php

抱歉,我的問題很愚蠢。(我真是太新了!)。

我有一個查詢(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數據庫中將用戶名設置為唯一,因此如果有人想插入類似的東西並且由於用戶已經存在而將其捕獲,則會給出錯誤消息。

我怎樣才能做到這一點?

如果您在MySQL中遇到唯一的鍵約束,它將引發一個錯誤,導致PHP引發一個錯誤,該錯誤隨后出現在您的日志中,這意味着您忘記了在代碼中做某事。 在嘗試執行INSERT語句之前,應該執行單獨的SELECT查詢以確定用戶是否已經存在(驗證)。

不建議使用mysql_ *函數。 您應該學習使用MySqli或PDO。 但是,我會回答你的問題。

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

您可以在插入任何內容之前進行查詢,以檢查用戶是否已經存在。

您應該清理並清潔那些$ _POSTS。

如果要查找用戶名是否存在,則需要事先執行選擇語句

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)轉義要插入數據庫的輸入

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM