我的登陆代码
<form action="logincheck.php" method="post">
用户名:<input type="text" name="User_name" />
<br />
密码:<input type="password" name="Pwd" />
<br />
<input type="submit" name="submit" value="登陆" />
<a href="register.php">注册</a>
</form>
<?php
$User_name=$_POST['User_name'];
$pwd = $_POST['Pwd'];
$sql = "select User_name,Pwd from table user_info where User_name = '$_POST[User_name]' and Pwd = '$_POST[Pwd]'";
$con = new mysqli("localhost","root","root","student");
$result = $con->query($sql); //进行数据库查询
$row = mysqli_num_rows($result);
if($row > 0)
{
echo "该用户存在"; //向前端返回数据
}
else
{
echo "该用户不存在"; //向前端返回数据
}
?>
我想验证用户名和密码 但是会报错mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in H:\php\PHPTutorial\WWW\dianyingyuan\logincheck.php on line 7
该用户不存在
有没有大神能帮解决一下
sql语句有问题,把table去掉
mysqli_num_rows需要结果集从 mysql_query() 的调用中得到,而不是query
$result =mysql_query($sql,$con); //////////$con->query($sql); //进行数据库查询
$row = mysqli_num_rows($result);
第一次回答问题
你看那个报错信息: boolean given in H:\php\PHPTutor, 就说明你sql语句写错了.
对, 你的语句多了一个table, 碰到bug, 我觉得可以使用throw调试.
还有,你简化POST变量之后好像没有使用啊,
<?php
$User_name=$_POST['User_name'];
$pwd = $_POST['Pwd'];
$sql = "select User_name,Pwd from user_info where User_name = '$_POST[User_name]' and Pwd = '$_POST[Pwd]'";
$con = new mysqli("localhost","root","root","student");
$result = $con->query($sql); //进行数据库查询
$row = mysqli_num_rows($result);
if($row > 0)
{
echo "该用户存在"; //向前端返回数据
}
else
{
echo "该用户不存在"; //向前端返回数据
}
//以下是建议优化版,用PDO参数绑定的方式防止SQL注入
$pdo = new PDO("mysql:host=localhost;dbname=数据库名","数据库用户","数据库密码");
$status = $pdo->prepare("select * from user_info where User_name=:a and Pwd=:b");
$status->execute(array('a'=>$User_name,'b'=>$Pwd));
$data = $status->fetch();
if ($data) {
//用户名密码正确
}else{
//用户名密码错误
}
?>