2020年7月5日日曜日

以前書いたphpは、バージョン変えたら動かないの巻き

FileMakerに本腰入れてから、随分とphp書いてなかったんだけど、取引先からPHPの話が来て、XAMPP、PHP、MYSQLを、おニュー!にリニューアルしちゃったんだよねぇ!(汗)
さぁ、以前作った(2008年頃)に動いていたファイルを動かしてみよか?と思ったら、エラーだらけ(笑)

まじかよ。前は動いてたじゃん。
Noticeエラーかと思ってたら、Warning、Fatal errorだらけ。
いったいどうしちゃったの?

一部ね
Fatal error: Call to undefined function mysql_connect() って何さ。
ver5.5以降ではmysql_系関数が使えなくなったらしいのよ。そんなこと聞いてないんだけど。
mysql_を 書き換えろっちゅー話。
しかも今はpdoらしい(笑)
えー、まじでそんなの今から覚えてられない・・・
で、いろいろと他人さまの調べてみたら
mysqli_でもいいらしいので、とりあえず今はmysqli_に変えてみた。

これで大丈夫だろ、と思ったら、今度は
mysqli_select_db() expects parameter 1 to be mysqli, string givenだと。
何をわけのわからない事言ってるんじゃ、と思ったら、
パラメーターの渡す順番が違うと・・・。(そんなに厳しかったっけか?)

mysql_select_db($this->db_name, $this->db_obj)を、
mysql_select_db($this->db_obj , $this->db_name)に変えたさ。



46行目の mysql_real_escape_string($values);も、正しくはmysqli_real_escape_string($values)らしい・・・。

が、phpを見てみると



注意:
これまでに mysql_real_escape_string() をよく使っていた人は、 mysqli_real_escape_string() の引数が mysql_real_escape_string() とは違うことに注意しましょう。 mysqli_real_escape_string() の最初の引数は link であり、 mysql_real_escape_string() のようにエスケープしたい文字列を最初に書くのではなくなりました。

とある。


他にもNoticeエラーが山ほど出たので先頭にerror_reporting(0);を入れて逃げた。

<?php
error_reporting(0);

後で絶対直すよー。とにかく他の動きが見たいのに、PHPとMySQLが動いてくれないんだもの。しょーがないよね。


ちなみに、phpが動くかどうかWeb上でTestすることができます。

<?php
function familyName($fname) {
  echo "$fname Refsnes.<br>";
}

familyName("Jani");
familyName("Hege");
familyName("Stale");
familyName("Kai Jim");
familyName("Borge");
?>

サンプルも入れているが、中を消してRunボタンを押してみるといいです。



自分の古いライブラリ、古い本は要注意ってやつですわ。
で、依頼は丁重にお断りしようかと思うのでありました(笑)


あと、17ファイル修正して動くかどうかだ・・・
やっぱ、FileMakerいいよ。
FileMakerにしな。


0 件のコメント:

コメントを投稿

最適化してますか?

 まるで入院していた患者が退院して元気に復活するような機能。 クラウドを使用するユーザーさんがほとんどなのですが、このゴールデンウィーク中は 最適化のメンテしときます。 データがピチピチしちゃいますよぅ。