我有一个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不成功!
答案 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。