PHP Mysqli查询返回false

时间:2017-08-11 10:54:09

标签: php mysql mysqli

我有一个mysql数据库和一个用户表。我想匹配用户名和密码。我的查询方法返回false但我从mysql数据库检查它,它应该是真的。任何人都可以找出错误发生的原因吗?

我在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 somy完全不熟悉,首要目标是完成验证。

EDIT2:OUTPUT

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

注意:尝试获取非对象的属性       第37行/var/www/html/connect.php       NULL不成功!

2 个答案:

答案 0 :(得分:3)

第一次:不是selecting database因此,请将database name作为参数传递给您,如下所示。

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

第二名:请勿将password保存为plain text。使用php password_hash()

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

答案 1 :(得分:1)

这意味着您收到了错误。

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

  

返回值¶

     

失败时返回FALSE。成功的SELECT,SHOW,DESCRIBE或   EXPLAIN查询mysqli_query()将返回一个mysqli_result对象。对于   其他成功的查询mysqli_query()将返回TRUE。