簡體   English   中英

驗證用戶名是否已經存在於PHP和MYSQL中?

[英]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版本中已棄用,以后將被刪除。

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

  1. 嘗試從同一表中插入和檢索相同的列。 要插入的柱usentisito ,但檢索utenti從表utenti 我認為這是一個錯字。
  2. 您將用戶名存儲在$Escape ,應使用相同的名稱進行檢索。
  3. 您需要執行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.

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