php 登陆代码出错 请大神帮忙看一下

我的登陆代码

 <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
该用户不存在

有没有大神能帮解决一下

4个回答

sql语句有问题,把table去掉

mysqli_num_rows需要结果集从 mysql_query() 的调用中得到,而不是query

 $result =mysql_query($sql,$con); //////////$con->query($sql); //进行数据库查询
$row = mysqli_num_rows($result);
kfgupgdo
kfgupgdo <?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"); $con->query("set names utf8"); $result = $con->query($sql); //进行数据库查询 $row = $mysqli->affected_rows; if($row > 0) { echo "该用户存在"; //向前端返回数据 } else { echo "该用户不存在"; //向前端返回数据 }
一年多之前 回复
kfgupgdo
kfgupgdo 看到上面的回答也是一脸懵逼,实在误人子弟 mysql面向过程的函数拿过来直接套在mysqli的面向对象上面,这波操作也是666, 请记得随时翻看php手册,这个才是王道
一年多之前 回复
qq_40393739
qq_40393739 回复qq_40393739: 因为我是新用户,无法给本文博主回答,就通过评论帮你解决问题吧!就按照我上一条评论改,亲自测试过!你的问题主要是from后面不应该有table关键字,获取到的值就直接按获取到的方式放入SQL语句就好了。而且顶部最好加上字符集声明,代码为header("Content-Type:text/html;charset=utf-8");
一年多之前 回复
qq_40393739
qq_40393739 他主要是SQL语句错误,$sql = "select * from user_info where User_name = '$User_name' and Pwd = '$pwd'";
一年多之前 回复
showbo
支付宝加好友偷能量挖 mysqli_query。。。少打了i
一年多之前 回复
showbo
支付宝加好友偷能量挖 $result =mysqli_query($sql,$con);
一年多之前 回复

第一次回答问题

你看那个报错信息: 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{
//用户名密码错误
}
?>

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!