function Query()
{
    $args = func_get_args ();
    if (sizeof ($args) > 0)
    {
         $query = $args[0];
         for ($i = 1; $i < sizeof ($args); $i++)
                $query = preg_replace ("/\?/", "'" . mysql_real_escape_string ($args[$i]) . "'", $query, 1);
    }
    else
    {
          return FALSE;
    }
私はこのような機能を持っています。基本的に、次のようなクエリを作成します。
$this->Query('SELECT * FROM USERS WHERE Username = ? AND Points < ?', $username, $points);
現在、非推奨の機能をサポートしていますが、私のクラスで置き換えるのと同じくらい簡単にmysql適応できます。mysqlimysqlmysqli
これは、SQL インジェクション攻撃に対して信頼できる安全なアプローチですか? すべてのクエスチョン マークは によって自動的にサニタイズされてmysql_real_escape_stringおり、これまで問題はありませんでしたがmysqli_real_escape_string、サニタイズに使用する必要がありますか?
mysqli の準備済みステートメントについては知っていますがbindParam、変数ごとに使用するのは少しやり過ぎのようです。
どう思いますか?