我已經設法編寫了一個php腳本,用於檢查用戶名是否已經存在於數據庫中,並且僅在新用戶不存在的情況下才添加新用戶。INSERT INTO SQL php函數不起作用
這是我的PHP腳本:
<?php
require "init.php";
if(isset($_POST['username']) && isset($_POST['forename']) && isset($_POST['surname']) && isset($_POST['password'])){
$username = $_POST['username'];
$forename = $_POST['forename'];
$username = $_POST['surname'];
$password = $_POST['password'];
$stmt = "SELECT username FROM users WHERE username = ?";
$result = $dbcon -> prepare($stmt);
$result->bind_param('s', $username);
$result->execute();
$result->bind_result($username);
if($result->fetch()){
echo "Can't add new user as it already exists!";
}
else{
$stmt_two = "INSERT INTO users (username, forename, surname, password)
VALUES(?, ?, ?, ?)";
$result_two = $dbcon -> prepare($stmt_two);
$result_two->bind_param('ssss', $username, $forename, $surname, $password);
$result_two->execute();
$result_two->close();
echo json_encode("Success");
}
}
?>
我相信這些記錄不被插入或被插入間歇由於我有不止一個事先準備好的聲明。如果我只用SELECT FROM
聲明自行完成INSERT INTO
聲明 - 記錄幾乎立即添加。
爲什麼這和我的代碼有什麼問題?
感謝
就更不用說了,你不需要檢查是否已經有使用PHP的這個用戶名的註冊。您可以使用UNIQUE約束來設置用戶名列。如果他們嘗試再次添加相同的用戶名,則查詢將失敗。所以你的代碼會更簡單。 – Phiter
你是什麼意思_slowly_?有多慢?我不認爲這塊代碼會佔用太多的資源,只要使用'COUNT()'或' - > num_rows'這兩個準備好的語句,就不會花費太多時間,它會花多長時間反正在你的環境中做這些事情? 15-30秒? – Ghost
@Ghost它甚至沒有將值插入到數據庫:(。它沒問題,當我沒有選擇語句。也許你可以幫助 - 我只是想添加一個用戶名IF和只是如果它不我不能在一個語句中做到這一點嗎? –