勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPバージョンアップの際に削除された関数(MySQL関数等)を使う方法

  PHP

PHP5系で制作されたシステムを8系でも動くようにリプレイスしてほしいという案件があった。ざっとソースコードを見てみると7系で削除されたMySQL関数が使われているように見受けられた。ただ何故か8系の環境に各種ファイルをアップロードすると正常に動作した。削除された筈の関数が使えている方法を以下にメモ。

 

ソースコード

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
if( !function_exists('mysql_connect') ){
function mysql_connect(string $host, string $user, string $pass, bool $new_link = false, int $clinet_flags = 0){
$mysqli_connect = mysqli_connect($host, $user, $pass);
return $mysqli_connect;
}
}
if( !function_exists('mysql_set_charset') ){
function mysql_set_charset(string $charset, mysqli $link_identifier = NULL){
return mysqli_set_charset($link_identifier, $charset);
}
}
if( !function_exists('mysql_select_db') ){
function mysql_select_db(string $dbname, mysqli $mysqli_connect){
return mysqli_select_db($mysqli_connect, $dbname);
}
}
if( !function_exists('mysql_query') ){
function mysql_query(string $sql, mysqli $mysqli_connect){
$result = mysqli_query($mysqli_connect, $sql);
if( !$result ){
//エラー処理
die();
}
return $result;
}
}
<?php if( !function_exists('mysql_connect') ){ function mysql_connect(string $host, string $user, string $pass, bool $new_link = false, int $clinet_flags = 0){ $mysqli_connect = mysqli_connect($host, $user, $pass); return $mysqli_connect; } } if( !function_exists('mysql_set_charset') ){ function mysql_set_charset(string $charset, mysqli $link_identifier = NULL){ return mysqli_set_charset($link_identifier, $charset); } } if( !function_exists('mysql_select_db') ){ function mysql_select_db(string $dbname, mysqli $mysqli_connect){ return mysqli_select_db($mysqli_connect, $dbname); } } if( !function_exists('mysql_query') ){ function mysql_query(string $sql, mysqli $mysqli_connect){ $result = mysqli_query($mysqli_connect, $sql); if( !$result ){ //エラー処理 die(); } return $result; } }
<?php
if( !function_exists('mysql_connect') ){
    function mysql_connect(string $host, string $user, string $pass, bool $new_link = false, int $clinet_flags = 0){
        $mysqli_connect = mysqli_connect($host, $user, $pass);
        return $mysqli_connect;
    }
}

if( !function_exists('mysql_set_charset') ){
    function mysql_set_charset(string $charset, mysqli $link_identifier = NULL){
        return mysqli_set_charset($link_identifier, $charset);
    }
}

if( !function_exists('mysql_select_db') ){
    function mysql_select_db(string $dbname, mysqli $mysqli_connect){
        return mysqli_select_db($mysqli_connect, $dbname);
    }
}

if( !function_exists('mysql_query') ){
    function mysql_query(string $sql, mysqli $mysqli_connect){
        $result = mysqli_query($mysqli_connect, $sql);
        if( !$result ){
            //エラー処理
            die();
        }
        return $result;
    }
}

function_existsで関数が定義されているかチェックし、定義されていない場合は独自関数という形でMySQL関数を定義する形を取っていた。

 

所感

上記のような形で対応するといった発想は自分には無かったので勉強になった。

あんまり無いケースだとは思うけど似たようなリプレイス案件があった時のために覚えておきたいところ。

 - PHP

  関連記事

CodeIgniter4でのメール送信方法(テキスト・HTMLメール)

CodeIgniter4.4.4でテキストメール及びHTMLメールを送信したい。 ...

ブラウザ上でファイルのアップ・ダウンロードが可能なTiny File Managerの利用方法

ブラウザ上でファイルのアップ・ダウンロードが可能なファイルマネージャーを設置した ...

PHPでtry~catch文

PHPでもあるってのを知らなかったのでメモ。 ■参考サイト http://www ...

PHPでランダムな値を取得したいケース諸々の対応方法

テストデータを作成する際にランダムな値を入れたかったけど、色々ケースがあったので ...

PHPとLINEを連携させて通知を送る方法(file_get_contents / curlの2パターン)

PHPとLINEを連携させ、LINEに何らかの通知メッセージを送信したい。以下に ...

S