PHP5からPHP7へのバージョンアップ-mysql関数
現在、運用しているサーバーのPHPが、バージョン5を切り捨てバージョン7のみになりました。
以前から告知はあったのですがなかなか手付かずで、古いシステムなどは書き直す必要があります。
ある程度はバージョンに依存しないように記述していたのですが
mysql関数がPHP7から廃止になりました。
現在のシステムではPDOで統一しているのですが、古いシステムに関してはmysql関数盛り沢山なので、この部分は全て書き直しです。
PDOに載せ替えるのが一番なんですが、苦しい。。。
それで、とりあえず今回はmysqli関数に変更する形でPHP7へ対応させてみました。
mysql関数を検索
Adobe CCのDreamweaverにすごく便利な機能があります。
検索および置換(一括置換)
アプリケーションを起動しmacOSの場合は shift + ⌘ + F でウィンドウが開きます。
このウインドウを開き検索対象となるフォルダーを指定します。
指定したフォルダ内にある全てのファイル内のソースを検索してくれます。
上部の入力エリアに検索対象の文字列を入力します。
今回はmysql関数が全て対象なので「mysql_」と入力し「すべて検索」のボタンをクリックします。
これで指定したフォルダ内にある全てのファイルなのソースに記述されている「mysql_」の文字列が一覧で表示されます。
mysqli関数に置き換え
次にウィンドウ下の入力エリアに置き換えたい文字列を入力します。
今回はmysql関数をmysqli関数に置き換えるので「mysqli_」と入力します。
入力後「すべて置換」ボタンをクリックすると、mysql_がmysqliに置き換わります。
※この機能をを利用して置き換えた文字列は元に戻せないので必ずバックアップをとってから行ってください。
これで
mysql_connect
mysql_select_db
mysql_close
mysql_query
mysql_insert_id
mysql_num_rows
mysql_fetch_array
などmysql関数がすべてmysqli関数に置き換わりました。
ただ、これだけでは記述の仕方によってはまだ解決していません。
1 2 3 | mysql_select_db( MYSQL_CONNECT_NAME ); mysql_query( $query ); mysql_fetch_array( $ret ); |
この関数の引数部分を下記のように変更する必要があります。
1 2 3 | mysqli_select_db( $link, MYSQL_CONNECT_NAME ); mysqli_query( $link, $query ); mysqli_fetch_array( $ret, MYSQLI_ASSOC ); |
MYSQL_CONNECT_NAMEはDB名を指定
$linkはmysqli_connect()を代入
$queryはSQL文を代入
$retはmysqli_query()を代入しています。
今回のシステムは上記の修正で基本的には動作に問題はありませんでした。
手続き型で構築したシステムなので変更箇所がかなり多かったので大変でした。
S.E->お勧め記事;
- PHPフレームワーク「Laravel」ディレクティブ-分岐処理(条件分岐)-
- PHPフレームワーク「Laravel」PHPテンプレートを利用する
- PHPフレームワーク「Laravel」ディレクティブ-繰り返し処理(ループ処理)-
- macOS Monterey にアップデート後、composerやhomebrewでenv: php: No such file or directoryが出る
- PHPフレームワーク「Laravel」ルーティング Route::get()
- PHP フレームワーク Laravel ディレクティブ – ループ変数 $loop –
- PHPフレームワーク「Laravel」MVCとコントローラを利用する
- PHPフレームワーク「Laravel」Bladeテンプレートを利用する
- XSERVERにSSHを利用してLaravel環境を構築する