0

したがって、現在、コードは手続き型の形式になっているため、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;
4

2 に答える 2

0

問題はおそらく二重のようです。まず、あなた$this->dbconnNULL. これは をmysqli_real_escape_string返す可能性がありNULLます。これは、SQL がおそらく空の文字列を探していることを意味します。

これを確認する最善の方法は、接続が確立されているかどうかを確認するか、NULL実行している SQL を確認することです。の数が見えます''か? 次に、null に対して連結しています。

ただし、発生する可能性がある唯一の方法は、エラー報告が抑制されている場合です。開発中は、エラーをオンにする必要があります。この質問にエラーを表示する方法に関する情報があります。

于 2017-06-01T21:44:12.057 に答える