繁体   English   中英

试图解决mysqli_real_escape_string

[英]Trying to make a work around for the mysqli_real_escape_string

因此,目前我以程序格式编写了代码,以便防止自己在mysqli_real_escape_string函数中添加“链接”,因此我制作了一种如下所示的方法:

    // Used to create a legal SQL string that you can use in an SQL statement in place of mysqli_real_escape_string
    public function escape_string($string) {
    $newstring = mysqli_real_escape_string($this->dbconn, $string);
    return $newstring;
}

当我使用此功能时,虽然没有任何结果,但请告诉我您是否有任何建议。

以下是使用函数的一些示例:

function email_exists($email,$dblayer){

$sql            =   "SELECT `id` FROM `users` WHERE `email` = '" . $dblayer->escape_string($email) . "'";

$results        =   $dblayer->select_query($sql);

if($results){

    return true;

}else{

    return false;

}

和这个:

public function pass_reset($email){

    $newpass        =   substr(md5(mt_rand(1,99999)),0,8);

    $newpasshash    =   md5($newpass . '************');

    $sql            =   "UPDATE `admin_users` SET `password` = '" . $newpasshash . "' WHERE `username` = '" . $this->dblayer->escape_string($email) . "'";

    $this->dblayer->modify_query($sql);

    return $newpass;

}

这是围绕另一个称为dbobject的dblayer创建的:

                case $range:

                $dates          =   explode(',',$_GET['search-string']);

                $sql            =   "SELECT SQL_CALC_FOUND_ROWS * FROM `user_profile` WHERE `created` BETWEEN '" . $dates[0] . "' AND '" . $dates[1] . "'";

                break;

            default:

                $sql            =   "SELECT SQL_CALC_FOUND_ROWS * FROM `user_profile` WHERE `" . $_GET['search-field'] . "` LIKE '%" . $dbobject->escape_string($_GET['search-string']) . "%'";



                break;

看来问题可能是双重的。 首先,我希望您的$this->dbconnNULL 这可能会使mysqli_real_escape_string返回NULL 这意味着您的SQL可能正在寻找空字符串。

验证此问题的最佳方法是检查连接是否为NULL或检查正在运行的SQL。 你看到了一些'' 然后,您将串联null。

但是,唯一可能的方式是,如果抑制了错误报告。 在开发过程中,应该打开错误。 有关如何显示此问题中的错误的信息。

这是我与原始代码不同的操作,以解决我的问题。 从上下文来看,它可能看起来有点模棱两可。

// Used to create a legal SQL string that you can use in an SQL statement in place of mysqli_real_escape_string
public function escape_string($string) {
    $newstring = '';

    if ($this->dbconn) {

        switch ($this->dbtype) {

            case 'mysql' :

                $newstring = mysqli_real_escape_string ( $this->dbconn, $string );
                break;
        }
    }
    return $newstring;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM