2015-09-24 122 views
0

顯示查詢的代碼失敗,但無法獲得該點爲什麼會發生。它只是用於測試代碼。請任何幫助。查詢失敗,出現mysqli查詢

<?php 
require_once("database_function.php"); 

class Auth { 
    public $password = "123456a"; 
    public $username = "allen"; 
    public function matching() { 
     Global $Database; 

     $sql = "SELECT * FROM auth"; 
     $sql .= " WHERE username =" . $this->{'username'}; 
     $sql .= " AND password =" . $this->{'password'}; 
     $sql .= " LIMIT 1"; 
     $result = mysqli_query($Database-> connect, $sql); 
     if ($result) { 
      echo "Querying Successfull"; 
     } elseif (!$result) { 
      echo "Querying failed"; 
     } 
    } 
} 

$authentication = new Auth(); 
$authentication -> matching(); 

?> 
+1

媽,我纔剛剛意識到我在程序員,而不是StackOverflow上。對於像你這樣的問題,這不是合適的社區! – Alternatex

+0

請使用mysqli_prepare(http://php.net/manual/en/mysqli.prepare.php)使用參數化查詢,因爲這是執行查詢的最糟糕的方式。去查看SQL注入和喜歡。它也將解決你在這裏所遇到的問題。另外,不要做全局變量。 – JDT

+0

請說明您沒有以純文本格式存儲密碼。 – Elin

回答

0

此: $result = mysqli_query($Database-> connect, $sql);

應該是這樣的: $result = mysqli_query($Database->connect, $sql);

的 「->」 和 「連接」 之間沒有空格。

而我第二個查詢參數。小鮑比表。

0

在字段值中使用單引號 $ sql。=「WHERE username ='」。 $ this - > {'username'}。「'」; $ sql。=「AND password ='」。 $ this - > {'password'}。「'」;

1

使用$username$password而不是$this{'username'}$this{'password'}

<?php 
    require_once ("database_function.php"); 

    class Auth { 
     public $password = "123456a"; 
     public $username = "allen"; 
     public function matching() { 
      Global $Database; 
      $sql = "SELECT * FROM auth"; 
      $sql .= " WHERE username =".$username; 
      $sql .= " AND password =".$password; 
      $sql .= " LIMIT 1"; 
      $result = mysqli_query ($Database->connect, $sql); 
      if ($result) { 
       echo "Querying Successfull"; 
      } elseif (!$result) { 
       echo "Querying failed"; 
      } 
     } 
    } 

    $authentication = new Auth(); 
    $authentication -> matching(); 

?>