PHP Mysqli查询返回false
我有一个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失败!
1:你不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
这意味着你得到了一个错误。
http://php.net/manual/en/mysqli.query.php
返回值¶
失败时返回FALSE。对于成功的SELECT,SHOW,DESCRIBE或 EXPLAIN查询,mysqli_query()将返回一个mysqli_result对象。对于 其他成功的查询mysqli_query()将返回TRUE。
我知道这是一个错误。我想解释的是,我可以从MySQL数据库中看到用户名和密码。我的php文件中的查询字符串是真的。我看不出为什么他们不匹配。 – emre01
是您的密码存储为纯文本? –
不,它在mysql数据库中。我猜测这是二进制格式。 – emre01
可以添加var_dump结果 –