簡體   English   中英

PHP / MySQL:如果記錄已經存在,如何返回信息(沒有更新)

[英]PHP / MySQL: How to return info if record already exists (without update)

我正在使用以下內容將新行插入 MySQL 數據庫。 對此的查詢存儲在一個 PHP 文件 ( ajax.php ) 中,輸入值通過 jQuery 中的 Ajax 調用傳遞給它。

一切都按預期工作,但如果電子郵件已經在數據庫中,我想向用戶返回一條消息。 我知道如何使用ON DUPLICATE KEY更新 db 行,但有人可以告訴我如何檢查它並回顯它是否已經存在(即不更新它)?
(電子郵件是一個主鍵,所以我只需要檢查這一列。)

我的PHP:

$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
if($conn->connect_error){
    die("Connection failed: " . $conn->connect_error);
}
$email = $_POST["email"];
$dob = $_POST["dob"]; 
$sql = "INSERT INTO Users (email, dob) VALUES ('" . $email . "', '" . $dob . "')"; 
if ($conn->query($sql)){ 
    echo 'DB Update successful'; 
}else{ 
    echo 'DB Update failed'; 
} 
$conn->close();

在插入之前,您只需要一個簡單的SELECT調用。

$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
if($conn->connect_error){
    die("Connection failed: " . $conn->connect_error);
}
$email = $_POST["email"];
$dob = $_POST["dob"];
$sql = "SELECT email FROM Users WHERE email = " .$email;
$query = $conn->query($sql);
if (mysqli_num_rows($query) > 0){
    echo "There exists an user with this email";
}
else {
    $sql = "INSERT INTO Users (email, dob) VALUES ('" . $email . "', '" . $dob . "')";
    if ($conn->query($sql)) {
        echo 'DB Update successful';
    }
    else {
        echo 'DB Update failed';
    };
}

$conn->close();

簡單的方法是計算表中與您嘗試存儲的電子郵件相同的條目的出現次數。 計數而不是 SELECTing 意味着它更快,並且只返回一個計數而不是一個完整的行,然后您必須查看或計算結果中的行。

$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
if($conn->connect_error){
    die("Connection failed: " . $conn->connect_error);
}

$stmt = $Conn->prepare("Select Count(email) as cnt FROM Users WHERE email = ?");
$stmt->bind_param('s', $_POST["email"]);
$stmt->execute();
$stmt->bind_result($cnt)
$stmt->close();

if ( $Cnt > 0 ) {
    // its already there so do whatever you want in this case
} else {

    $sql = "INSERT INTO Users (email, dob) VALUES (?,?)"; 
    $stmt = $Conn->prepare($sql);
    $stmt->bind_param('ss', $_POST["email"],$_POST["dob"]);
    if ($stmt->execute(){ 
        echo 'DB Update successful'; 
    }else{ 
        echo 'DB Update failed'; 
    } 
}
$conn->close();

暫無
暫無

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

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