[英]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,因為它是對象的屬性。 感謝您的幫助!
試試這個:
$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.