[英]Verify if username already exists with PHP and MYSQL?
我想檢查用戶名是否已存在於數據庫中,並編寫了此代碼
<?php
include('connect.php');
if(isset($_POST['registrati'])) {
$Username = $_POST['nickname'];
$Password = md5($_POST['password']);
$Escape = mysql_real_escape_string($Username);
$Query2 = "SELECT * FROM utenti WHERE utenti='".$Username."'";
if(mysql_num_rows($Query2)>0) {
echo "Nome utente già in uso";
}
else {
$Query = "INSERT INTO sito(usenti, password) VALUES('$Escape', '$Password')";
$Esecuzione = mysql_query($Query);
}
if(!$Esecuzione) {
echo "Errore: ".mysql_error();
}
else {
echo "";
}}
?>
當我運行它時,即使我輸入相同的兩個用戶名,也什么也沒說,並且將它們均等地放置。 為什么?
在檢查返回的行數mysql_num_rows()
之前,需要執行查詢。
$result_set = mysql_query($Query2)
if(mysql_num_rows($result_set) > 0) {
//continue
}
旁注: MySQL_*
PHP 5.5起不推薦使用MySQL_*
。 改用MySQLi_*
或PDO
。
您需要一個結果作為mysql_num_rows的參數。
所以,
$Query2 = mysql_query("SELECT * FROM utenti WHERE utenti='$Username'");
而不只是字符串
$Query2 = "SELECT * FROM utenti WHERE utenti='$Username'";
應該修復它。
請注意,如果使用雙引號,則不需要連接字符串。
另外,強烈建議您停止使用mysql_ *函數,因為它們已被棄用,並切換到mysqli_ *或PDO。 看到紅色框 。 而且不要忘了總是對用戶輸入進行清理(或使用准備好的語句),因為否則您可能會接受SQL注入。
在mysql_num_rows($Query2)
執行query2
像這樣,
$result = mysql_query("SELECT * FROM utenti WHERE utenti='".$Username."'")
if (mysql_num_rows($result) > 0) {//code)
你錯過了
mysql_query($Query2)
如果條件之前。
您應該嘗試使用PHP數據對象(PDO)連接到數據庫,並避免使用mysql擴展。 mysql_函數在php 5.5.0版本中已棄用,以后將被刪除。
usenti
表sito
,但檢索utenti
從表utenti
。 我認為這是一個錯字。 $Escape
,應使用相同的名稱進行檢索。 mysql_query($Query2)
來執行實際查詢,然后才能檢查行數。 嘗試以下修復:
$Query2 = mysql_query ("SELECT * FROM sito WHERE usenti='".$Escape."'");
if(mysql_num_rows($Query2)>0) {
echo "Nome utente già in uso";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.