当前位置: 首页 > 面试题库 >

PHP PDO登录脚本不起作用

汪鸿波
2023-03-14
问题内容

这里的另一个新手..我正在尝试修复以下代码,以防止sql注入,并学习编写php和sql的新方法。

您的建议将不胜感激。

我修改了这个

<?php

class DB_Functions {

    private $db;

    function __construct() {

        require_once 'db_connect.php';

        $this->db = new DB_Connect();
        $this->db->connect();
    }

    public function getUser($uid, $password) {
        $result = mysql_query("SELECT * FROM users WHERE id = '$uid' AND pswd = '$password'") or die(mysql_error());

        $no_of_rows = mysql_num_rows($result);

        if ($no_of_rows > 0) {

            $result = mysql_fetch_array($result);
            return $result;

        } else {

            return false;
        }
    }
}

?>

为此,我没有得到相同的结果。

<?php

class DB_Functions {

    private $db;

    function __construct() {

        require_once 'db_connect.php';

        $this->db = new DB_Connect();
        $this->db->connect();
    }

    public function getUser($uid, $password) {
        $sql = $db->prepare("SELECT * FROM users WHERE id=:id AND pswd=:password");
        $result = $db->query($sql);
        $no_of_rows = mysql_num_rows($result);

        if ($no_of_rows > 0) {

            $result = mysql_fetch_array($result);
            return $result;

        } else {

            return false;
        }
    }
}
?>

问题答案:

您不能将mysql与mysqli或PDO混合使用。您需要查看错误日志,因为这不可能实现-您应该看到大量致命错误。

public function getUser($uid, $password) {
    $stmt = $db->prepare("SELECT * FROM users WHERE id=? AND pswd=?");
    $stmt->execute(array($uid, $password));
    return $stmt->fetch();
}


 类似资料:
  • 我有一个基本的Groovy脚本,我希望尽可能简单地创建日志。我希望消息转到标准输出,以及一个日志文件,日志文件中的每个条目都有一个时间戳。 我不能使用@Log符号,因为它是一个脚本,我没有要注入的类。否则我认为这将是理想的。

  • 问题内容: 我创建了一个redis lua脚本来执行基于关键数据类型的命令: 每次执行时,它都会返回null。请帮助纠正脚本。 问题答案: 对响应的返回形式如下表:(如果类型为字符串,则返回) 因此,为了正确检查,您应该将代码更改为: 其余代码将正常运行。 问题是这样的:TYPE命令是少数几个返回“简单字符串”或“状态” redis答复的命令之一(有关响应类型,请参见redis协议规范)。在red

  • 我在网上到处都找过了,SESSION变量的细微差别需要对我进行一些澄清。 我有一个设置会话变量的网站(我假设它还设置了一个 cookie 来定义会话 id 是什么?不知道这是如何工作的),一切都完美无缺。我在通过手机漫游(使用 wifi)时发现,每当手机切换 wifi 网络时,浏览器似乎无法再访问会话,直到该窗口/选项卡关闭并重新打开。 根据我所读到的以下内容,请为我澄清: > < li> 当浏览

  • 我正在尝试使用解析SDK进行Facebook的单点登录,但是当我按下登录按钮时,我收到此错误: 哦哦。出现错误:错误域=com.facebook。sdk Code=2“操作无法完成。(com.facebook.sdk error 2.)”UserInfo=0x1d5bac20{com.facebook.sdk:ErrorLoginFailedReason=com.facebok.sdk:Syste

  • 我在通过网络浏览器(IE或Chrome)使用ADFS登录应用程序时遇到问题。我希望使用ADFS SAML自动、透明地登录用户(当前用户已登录),而无需输入这些标识符。 所以我有2台运行Windows 2016 Server的服务器:-第一个Serv1:带有Active Directory目录的域控制器-第二个Serv2:ADFS服务器(4.0),它连接到控制器Serv1 当我试图访问我的应用程序时

  • 问题内容: 我正在尝试设置回合部署脚本。我在使用远程登录时遇到了一些麻烦。在远程服务器上创建数据库时,我们需要使用sql帐户(而不是计算机或域,这是针对Server 2008 R2 SP1上的MSSQL 2008R2)登录。有没有办法为回旋连接和运行脚本提供不同的凭据,因为我在文档中没有看到它?谢谢。 问题答案: 如果指定连接字符串而不是服务器名称和数据库名称,则还可以设置凭据。 来自:https