sql >> データベース >  >> RDS >> Mysql

mysql_real_escape_stringの安全な代替手段? (PHP)

    • この関数を呼び出すたびに接続するのはひどい考えです。適切に計画されたアプリケーションには、そのような奇妙な制限はありません。
    • 次のような置換を使用できます
      myquery("SELECT * FROM table WHERE id = %s","My string");

    • 別の置換方法、最新の方法、つまりプリペアドステートメントを使用できます。他の多くの回答で説明されます。

    まだ誰も投稿していないので、ここに大まかな例を示します

    function fetchAll(){
     $args = func_get_args();
     $query = array_shift($args);
     $stmt = $pdo->prepare($query);
     $stmt->execute($args);
     return $stmt->fetchAll();
    }
    $a=$db->fetchAll("SELECT * FROM users WHERE status=? LIMIT ?,?",$status,$start,$num);
    
    • シングルバイトエンコーディングまたはutf-8を使用している限り、mysql_real_escape_stringを使用する必要はないため、 mysql_escape_string (非推奨)またはaddslashesで十分です


    1. R12.2アップグレードパート-4のステップバイステップのアップグレードプロセス(12.2.xリリースアップデートパックの適用)

    2. 文字列内のMySQLの2番目(または3番目)のインデックス

    3. 大規模なPHPアレイとMySQLデータベース?

    4. LIKEを使用したSQLUPDATE