2018年10月06日

PHP5からPHP7.2.10にバージョンアップ(配列の要素の記述ルールが変わった)

PHPのバージョンをPHP5.xからPHP7.2.10にしたらいろいろ変わっててプログラムが動きません。

今回は配列の宣言について。

今までは、

$RE[db_host] = $db_host;
$RE[db_user] = $db_user;
$RE[db_passwd"] = $db_passwd;

などと書いていても大丈夫でしたが、

Warning: Use of undefined constant db_host - assumed 'db_host' (this will throw an Error in a future version of PHP) in /home/now/www/public/class/Sample.phpon line 64

とエラーが出てしまいます。

PHP7.2.10では、

$RE["db_host"] = $db_host;
$RE["db_user"] = $db_user;
$RE["db_passwd"] = $db_passwd;

と$RE["db_host"]のように配列の要素をダブルクォーテーションで囲わないといけなくなったようです。
タグ:PHP

posted by くろやん at 2018年10月06日 | Comment(0) |  榔HP7.2.10にバージョンアップ

PHP5からPHP7.2.10にバージョンアップ(mysql_connect、rowCount)


さくらインターネットで利用しているPHPのバージョンを5.xから7.2.10にバージョンアップしました。

バージョンアップしたところ、
mysql_connect
が使えなくなりDB接続できなくなる不具合発生。
mysql_connectが使えないとDB接続できないので急いで改修しました。


// PHP5.x
// $conn = mysql_connect($AccountData[db_host],$AccountData[db_user],$AccountData[db_passwd]);

// PHP7.2.10
// $dsn='mysql:host=' . $AccountData[db_host] . ';dbname=' . $AccountData[db_name]. ';charset=utf8';  ←エラー発生
$dsn='mysql:host=mysqlXXX.db.sakura.ne.jp;dbname=DBNAME;charset=utf8';

$pdo = new PDO('mysql:host=mysqlXXX.db.sakura.ne.jp;dbname=DBNAME;charset=utf8','DBUSER','DBPASSWORD');
$pdo->query('SET NAMES utf8;');
$result = $pdo->query('select XXX from XXX');

// echo "result".$result->rowCount()."<BR>";
foreach($result as $row){
  $no = $row['XXX']+1;
}

mysql_connectからPDOに変更しました。
また、rowCount()も利用できなくなったのでforeachで回避しています。

PDOでは変数を利用するとなぜかエラーになるので、ひとまず動かすためにDB名などを直接書いています。

いろいろきれいでない構文だと思いますが、とりあえず動かすために仕方がない。
これから慣れていこうと思います。

タグ:PHP

posted by くろやん at 2018年10月06日 | Comment(0) |  榔HP7.2.10にバージョンアップ