包袱里有抱负 2015-12-15 01:23 采纳率: 0%
浏览 1483

PHP中mysql_num_rows问题

图片说明

 <head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>注册</title>
</head>
<?php
    if(isset($_POST["Submit"]) && $_POST["Submit"] == "注册")
    {
        $user = $_POST["username"];
        $psw = $_POST["password"];
        $psw_confirm = $_POST["confirm"];
        if($user == "" || $psw == "" || $psw_confirm == "")
        {
            echo "<script>alert('请确认信息完整性!'); history.go(-1);</script>";
        }
        else
        {
            if($psw == $psw_confirm)
            {
                mysql_connect("localhost","root","");   //连接数据库
                mysql_select_db("用户表");   //选择数据库
                mysql_query("set names 'gdk'"); //设定字符集
                $sql = "select username from user where username = '$_POST[username]'"; //SQL语句
                $result = mysql_query($sql);    //执行SQL语句
                $num = mysql_num_rows($result);

图片说明

 <head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登陆</title>
</head>
<?php
    if(isset($_POST["submit"]) && $_POST["submit"] == "登陆")
    {
        $user = $_POST["username"];
        $psw = $_POST["password"];
        if($user == "" || $psw == "")
        {
            echo "<script>alert('请输入用户名或密码!'); history.go(-1);</script>";
        }
        else
        {
            mysql_connect("localhost","root","");
            mysql_select_db("用户表");
            mysql_query("set names 'gbk'");
            $sql = "select username,password from user where username = '$_POST[username]' and password = '$_POST[password]'";
            $result = mysql_query($sql);
            $num = mysql_num_rows($result);
  • 写回答

1条回答

  • 不良使 Python领域潜力新星 2023-06-06 21:26
    关注

    mysql_num_rows 函数是用来获取查询结果集中的行数的。对于你的代码,如果执行 SQL 查询语句失败,那么 $result 变量会为 false,此时调用 mysql_num_rows 函数会报错。

    可以通过以下方式来修改代码,避免因查询失败而导致的错误:

    注册页面:

    ...
    $result = mysql_query($sql);
    if ($result) {
        $num = mysql_num_rows($result);
    } else {
        echo "<script>alert('查询失败!'); history.go(-1);</script>";
        exit;
    }
    ...
    

    登录页面:

    ...
    $result = mysql_query($sql);
    if ($result) {
        $num = mysql_num_rows($result);
    } else {
        echo "<script>alert('查询失败!'); history.go(-1);</script>";
        exit;
    }
    ...
    

    此外,建议不要再使用 mysql 扩展库来连接 MySQL 数据库,因为该库已经被废弃,不再受到官方维护,且存在一些安全性问题。推荐使用 mysqliPDO 扩展库来连接 MySQL,例如:

    // mysqli 扩展库连接 MySQL
    $conn = mysqli_connect("localhost", "root", "", "用户表");
    if (!$conn) {
        die("连接失败:" . mysqli_connect_error());
    }
    
    // PDO 扩展库连接 MySQL
    $conn = new PDO("mysql:host=localhost;dbname=用户表", "root", "");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    

    建议在使用 MySQL 时保证查询语句的安全性,使用参数化查询或其他防止 SQL 注入的方式,避免程序被攻击。

    评论

报告相同问题?

悬赏问题

  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 arduino控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题