2017-08-11 437 views
-3

我有一個mysql數據庫和一個用戶表。我試圖匹配用戶名和密碼。我的查詢方法返回false,但我從MySQL數據庫檢查它,它應該是真實的。任何人都可以找出錯誤發生的原因嗎?PHP Mysqli查詢返回false

我已經看到了類似的問題在stackoverflow但nothnig似乎工作。 謝謝。

connect.php

<?php 
ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(E_ALL); 
if(isset($_GET['Login'])){ 
// Create connection 
    $config = parse_ini_file('config.ini'); 
    $conn = new mysqli($config['host'], $config['username'], 
    $config['password']); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
echo "Connected successfully\n"; 
$username = $_GET['username']; 
$password = $_GET['password']; 
var_dump($username); 
var_dump($password); 
$sql="SELECT * FROM `User` WHERE `username`='$username' and `password`='$password'"; 
var_dump($sql); 
$result=$conn->query($sql); 
var_dump($result); 
$count=$result->num_rows;//This is line 37 
var_dump($count); 
// If result matched $username and $password, table row must be 1 row 
if ($count==1) { 
    echo "Success! $count"; 
} 
else { 
    echo "Unsuccessful! $count"; 
} 
} 
?> 

編輯:有可能會涉及到有關安全或壞的編碼代碼的問題,我是完全陌生的PHP索米的第一個目標是完成驗證。

EDIT2:輸出

Connected successfully string(5) "user0" string(5) "pass0" string(68) 
"SELECT * FROM `User` WHERE `username`='user0' and `password`='pass0'" 
bool(false) 

注意:試圖讓非對象的財產 /var/www/html/connect.php上線37 NULL失敗!

+0

是您的密碼存儲爲純文本? –

+0

不,它在mysql數據庫中。我猜測這是二進制格式。 – emre01

+0

可以添加var_dump結果 –

回答

3

1:你不selecting database所以通過database name作爲參數,如下圖所示。

$conn = new mysqli($config['host'], $config['username'], $config['password'],'database_name'); 

第二:不要保存passwordplain text。使用PHP password_hash()

3:使用Prepared statement or PDO避免sql injection

+0

謝謝。下次我必須更加小心。不敢相信我忘了傳遞數據庫名稱。 – emre01

+0

很高興幫助你:) @ emre01 – JYoThI

1

這意味着你得到了一個錯誤。

http://php.net/manual/en/mysqli.query.php

返回值¶

失敗時返回FALSE。對於成功的SELECT,SHOW,DESCRIBE或 EXPLAIN查詢,mysqli_query()將返回一個mysqli_result對象。對於 其他成功的查詢mysqli_query()將返回TRUE。

+0

我知道這是一個錯誤。我想解釋的是,我可以從MySQL數據庫中看到用戶名和密碼。我的php文件中的查詢字符串是真的。我看不出爲什麼他們不匹配。 – emre01