2014-09-18 49 views
0

我有这个注册/登录脚本,这很好(我是PHP的新手)。防止与登录数据库中的数据库不匹配的凭据

我遇到了一个问题,任何凭证都可以登录并创建一个会话,代码不会查看输入内容,然后检查数据库以查看它们是否正确,我收到此错误消息。

警告:mysqli_num_rows()预计参数1被mysqli_result,在C定的boolean:\ WAMP \ WWW \网络游戏\ login.php中25

现在我已经做了一些研究,我发现了一个问题(在这个网站上),说我查询的查询返回一个布尔值而不是结果。下面的代码

$query = mysqli_query($con,"select * from users where password='$password' AND username='$username'"); 
$rows = mysqli_num_rows($query); 

通常是一个正确的答案给我的信息来解决我的问题,并没有张贴在这里,但我不知道如何纠正这种:(

+1

你应该永远不要直接插入变量到你的SQL查询。他们必须先逃脱。更好:使用预先准备的语句。 – lxg 2014-09-18 17:00:17

回答

1

mysqli_query会返回一个布尔值,最有可能的是false,因为查询失败。最好用mysqli_error找出为什么它不起作用,没有显示任何更多的代码,我们甚至不能猜测。

+0

mysqli_error给了我一个信息错误,让我做出改变,它现在正在工作!非常感谢!我会更频繁地使用它,节省更多的问题让你回答:P – 2014-09-18 17:06:29

0

那么你没有结果查询你所做的,所以用$ rows = mysqli_num_rows($ query);行会给你0行,j如果测试结果大于零,则测试它;

if ($rows > 0) { 
    //do the magic :) 
} 
0

你应该首先检查你的查询isreturning东西或not.if它没有返回的东西然后就处理它的其他方式。只是假设这是如下方式

if($query === FALSE) { 
    die(mysql_error()); // error handling 
} 
$rows = mysqli_num_rows($query);