簡體   English   中英

MySQL查詢IFEXIST不返回任何結果

[英]Mysql query IFEXIST does not return any result

我正在嘗試在PHP中創建一個登錄表單。 我正在傳遞用戶輸入的用戶名和密碼,並檢查數據庫中存在的天氣。

我已經完成了編碼,但是IF EXIST查詢未返回任何結果。

誰能幫我解決這個問題。 或給我一個替代主意..謝謝...

        <?php

        $name= $_POST["usname"];
        $pass = $_POST ["password"];

        $connection = mysqli_connect("localhost","sathya","sathya","learning1"); 
        //mysqli_query($connection,"INSERT INTO user (name, password) VALUES ('".$name."', '".$pass."')");
        $result = mysqli_query($connection, "IF EXISTS(SELECT *  FROM  user  WHERE name='".$name."'AND password='".$pass."')");
        mysqli_close($connection);

        echo "result ".$result;

        if($result == True){

          header("Location: logedin.php");
            //redirect_to('logedin.php');
        }else{

            echo "not logged in installed";
        }


        ?>

這是一個較晚的答案,但是您需要注意一些事項。 (不排除已接受的答案)。

您將需要使用if(mysqli_num_rows($result) > 0)因為如果用戶名匹配且密碼不匹配,則查詢將始終為TRUE,反之亦然。

您最好使用mysqli_num_rows()而不是使用if($result == True)

旁注:請查閱我的有關密碼存儲和SQL注入的腳注。

<?php
$DB_HOST = "xxx";
$DB_NAME = "xxx";
$DB_PASS = "xxx";
$DB_USER = "xxx";

$db = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
    if($db->connect_errno > 0) {
      die('Connection failed [' . $db->connect_error . ']');
    }

$name = $_POST["usname"]; // See footnotes about this
$pass = $_POST ["password"]; // See footnotes about this

$result = mysqli_query($db, "SELECT EXISTS(SELECT *  FROM  users  WHERE username='".$name."' AND password='".$pass."')");

// Works just as well
// $result = mysqli_query($db, "SELECT * FROM  users  WHERE username='".$name."' AND password='".$pass."'");

    if(mysqli_num_rows($result) > 0){
    echo "Both match.";
    }

    else{
    echo "Sorry, there was not a perfect match.";
    }

腳注:

您還可以使用:

$result = mysqli_query($db, "SELECT * FROM  users  WHERE username='".$name."' AND password='".$pass."'");

對於使用較少字符的SELECT EXISTS(SELECT *

或選擇實際列:

$result = mysqli_query($db, "SELECT username, password FROM  users  WHERE username='".$name."' AND password='".$pass."'");

我建議您使用准備好的語句並清理輸入內容。 不這樣做將使您易於進行SQL注入

這是一些有關(mysqli)准備好的語句的教程,您可以研究和嘗試:

以下是有關PDO的一些教程:


密碼

我還注意到您以純文本形式存儲密碼。 不建議這樣做。

使用以下之一:

其他連結:

關於PHP部分,我什么也沒說,但是查詢肯定會導致語法錯誤。

IF whatever ...僅在存儲過程或函數中允許,而在單個查詢中則不允許。 但是,您可以將IF替換為SELECT類的

$result = mysqli_query($connection, "SELECT EXISTS(SELECT *  FROM  user  WHERE name='".$name."'AND password='".$pass."')");

該查詢將返回0(如果不存在任何條目)或1(如果存在一個條目)。 使用EXISTS也是一個好主意,因為它會在找到條目后立即停止查詢,並且不會返回整個數據集。

您可以在使用“ IF EXISTS”功能的同時嘗試以下操作-

$result = mysqli_query($connection, "SELECT *  FROM  user  WHERE name='".$name."'AND password='".$pass."'");



$count=mysql_num_rows($result);
if($count==1)  // $count=1 if any row is present with mathing username and pwd in db
{
    echo "user already logged in";
}
else  
{
  echo "user not exist";
}

暫無
暫無

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

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