簡體   English   中英

嘗試使用PHP檢查MySQL數據庫中是否已存在用戶名

[英]Trying to check if username already exists in MySQL database using PHP

我已經查看過與我的問題類似的許多其他帖子,並盡可能地實現了他們的解決方案(據我所知)。 但是,每次執行此腳本時,都會執行else塊中的代碼(即使輸入的用戶名是已存在的用戶名)。

表名是“用戶”,我要搜索的列是“用戶名”。 我的表單中的輸入被讀入$username ,我驗證它是使用echo正確讀取的。 $con包含與服務器的連接。

在某些時候我也放入echo $query (沒有打印)和echo mysql_num_rows($query) (沒有打印)。

這是代碼的相關部分。 真的很感激一些提示。

$query = mysql_query("SELECT username FROM Users WHERE username=$username", $con);

  if (mysql_num_rows($query) != 0)
  {
      echo "Username already exists";
  }

  else
  {
    ...
  }

編輯:顯然我應該使用mysqli為我的服務器和我檢查num_rows的方式是通過執行$ query-> num_rows,因為它是對象的屬性。 感謝您的幫助!

將您的查詢更改為喜歡。

$username = mysql_real_escape_string($username); // escape string before passing it to query.
$query = mysql_query("SELECT username FROM Users WHERE username='".$username."'");

但是,MySQL已被棄用。 您應該使用MySQLiPDO

試試這個:

$query = mysql_query("SELECT username FROM Users WHERE username='$username' ")

不要將$con添加到mysql_query()函數中。

免責聲明:在傳遞給mysql_query的字符串中使用username變量,如上所示,是一個簡單的SQL注入攻擊向量,到目前為止username依賴於Web請求的參數(查詢字符串,標題,請求體等),或者其他惡意實體可能控制的參數。

$ query = mysql_query(“SELECT username FROM Users WHERE username ='$ username'”)

使用預准備語句 ,不要使用mysql,因為它已被棄用。

// check if name is taken already
$stmt = $link->prepare("SELECT username FROM users WHERE username = :username");
$stmt->execute([
    'username' => $username
]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

if (isset($user) && !empty($user)){
    // Username already taken
}

嘗試這一個

 mysql_connect('localhost','dbuser','dbpass');

$query = "SELECT username FROM Users WHERE username='".$username."'";
mysql_select_db('dbname');

    $result=mysql_query($query);

   if (mysql_num_rows($query) != 0)
   {
     echo "Username already exists";
    }

    else
   {
     ...
    }

一切都很好,只有一個錯誤。 改變這個:

$query = mysql_query("SELECT username FROM Users WHERE username=$username", $con);
$query = mysql_query("SELECT Count(*) FROM Users WHERE username=$username, $con");

if (mysql_num_rows($query) != 0)
{
    echo "Username already exists";
}
else
{
  ...
}

SELECT *不起作用,使用SELECT COUNT(*)

$firstname = $_POST["firstname"];
$lastname = $_POST["lastname"];
$email = $_POST["email"];
$pass = $_POST["password"];

$check_email = mysqli_query($conn, "SELECT Email FROM crud where Email = '$email' ");
if(mysqli_num_rows($check_email) > 0){
    echo('Email Already exists');
}
else{
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $result = mysqli_query($conn, "INSERT INTO crud (Firstname, Lastname, Email, Password) VALUES ('$firstname', '$lastname', '$email', '$pass')");
}
    echo('Record Entered Successfully');
}

這是我寫的一個:

$error = false;
$sql= "SELECT username FROM users WHERE username = '$username'";
$checkSQL = mysqli_query($db, $checkSQL);

if(mysqli_num_rows($checkSQL) != 0) {
   $error = true;
   echo '<span class="error">Username taken.</span>';
}

奇跡般有效!

改變這個

$query = mysql_query("SELECT username FROM Users WHERE username=$username", $con);

$query = mysql_query("SELECT username FROM Users WHERE username='$username'");

PHP 7改進了查詢.........

$sql = mysqli_query($conn, "SELECT * from users WHERE user_uid = '$uid'"); if (mysqli_num_rows($sql) > 0) { echo 'Username taken.'; }

暫無
暫無

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

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