這個問題不應該在PHP中得到解決因爲這是一個數據庫設計問題。相反,您想要更改UserDetail
表,以便數據庫將拒絕試圖插入副本的任何查詢。這是查詢運行:
$sql = 'ALTER TABLE UserDetail ADD UNIQUE INDEX (`Username`)';
$result = $conn->query($sql);
if($result) echo 'Success!';
else echo $conn->error;
一旦你這樣做成功,這將是不可能的,進入該表中重複Username
值;該查詢將不會執行並會產生錯誤。
我們避免錯誤,當你的腳本試圖插入一個已經存在的用戶名,你的插入查詢更改從INSERT
到INSERT IGNORE
:
$sql = "INSERT IGNORE INTO UserDetail SET Username='$escaped_new_username'";
$result = $conn->query($sql);
順便說你的代碼會失敗,因爲你想呼應結果是$conn->query
,但它不是一個字符串。以顯示DB結果的步驟是:
- 運行查詢(你沒有)
- 確認沒有錯誤的檢查結果不是
false
- 通過執行
fetch
fetch_assoc
,fetch_array
或抓取結果一些這樣的方法對結果
使用或顯示您提取的內容。
查看您正在使用的數據庫驅動程序的文檔。最常見的是MySQLi和PDO_MySQL
的可能的複製[如何「插入如果不存在」在MySQL?(http://stackoverflow.com/questions/1361340/how-to-insert-if-未存在,在MySQL的) – revo