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

すべてのmysql_関数を盲目的にmysqli_に置き換えることはできますか?

    簡単な答えはいいえです 、機能は同等ではありません。

    良いニュースは、変更する呼び出し/プロジェクトがたくさんある場合に役立つコンバーターツールがあることです。これにより、スクリプトをすぐに機能させることができます。

    https://github.com/philip/MySQLConverterTool

    これは、Oracleの元のバージョンのフォークバージョンであり、コーシャです。

    とはいえ、コードを更新することはそれほど難しくありません。とにかく、オブジェクト指向の方法論に移行することをお勧めします...

    1)接続

    すべての目的と目的のために、たとえば、接続をPHP変数として保存する新しい接続関数が必要です。

    $mysqli = new mysqli($host, $username, $password, $database);
    

    $mysqliへの接続を保存したことに注意してください 。 $dbに保存できます または好きなものを使用できますが、コード全体でこれを使用して接続を参照する必要があります。

    接続を開く前に、mysqliのエラーレポートを有効にすることを忘れないでください。

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    

    2)クエリ

    注:MySQLiで使用可能なプリペアドステートメントを使用してSQLインジェクションから保護する必要があります。 PHPでSQLインジェクションを防ぐにはどうすればよいですか? をご覧ください。 、ただし、ここでは基本について説明します。

    ここで、クエリに引数として接続を含める必要があります。その他のmysqli_ 関数。手続き型コードでは、これが最初の引数です。OOでは、クラスメソッドのように記述します。

    手順:

    $result = mysqli_query($mysqli, $sql);
    

    OO:

    $result = $mysqli->query($sql);
    

    3)結果を取得

    結果のフェッチは、古いmysql_と同様です。 手続き型の機能;

    while ($row = mysqli_fetch_assoc($result))
    

    ただし、$resultとして はmysqliのオブジェクトになりました。オブジェクト関数呼び出しを使用できます;

    while ($row = $result->fetch_assoc())
    

    4)接続を閉じる

    したがって、前と同じように、close関数に接続を含める必要があります。手続き上の議論として;

    mysqli_close($mysqli);
    

    そして、オブジェクト指向で関数を実行するオブジェクトとして;

    $mysqli->close();
    

    私がそれらすべてを経験したならば、私は永遠にここにいるでしょう、しかしあなたは考えを理解します。 ドキュメント をご覧ください。 詳細については。接続のクローズ、結果のリリース、またはエラーと行のカウント機能を変換することを忘れないでください。

    基本的な経験則は、データベース接続を使用する関数の場合、今すぐ関数に含める必要があります(proceduralの最初の引数として、またはOOで関数を呼び出すために使用するオブジェクトとして)、または結果セットの場合関数をmysqli_に変更するだけです。 または、結果セットをオブジェクトとして使用します。



    1. MySQL8.0のphpMyAdmin

    2. OracleのSESSIONTIMEZONE関数

    3. PostgreSQLまたはOracleで月の名前で注文する方法

    4. 日時列から日付を選択するにはどうすればよいですか?