MacOS上に、MAMPで走らせている MySQL上に databaseを作成しています もちろんこれは Internet Serverに uploadするための開発用のものです
その中で 鎌倉ライブのための databaseとして kamakuralive_sessionsという結構データが蓄積された DBがありますが、kamakuralive.orgの HomePageを Laravelで書き直すという壮大な夢を実現すべすべく作業しているのに併せて、kamakuralive_sessionというDBからデータを一部 新たな DBである kamakura_liveというDBに移行しようとしてきたのです
これが結構難儀なのです 簡単に .csv形式で SQLからexportして不要なカラムを削除してそれから新たな kamakura_live DBにimportすれば簡単そうですよね
しかしながらそんなにうまく行かないのです これは「日本語」という壁が立ちはだかるのです。どうしてそうなっているのか知らないのですが、Microsoftの作成している表計算ソフトの王者 Excelが何と文字を Shift-JISという旧態依然たる文字コードを使用しているのです。
現代は UTF-8という文字コードを使用するのが全世界で一般的なのですが、Excelのみ Shift-JISを使用しているのです。要するに昔の悪しき慣習をそのまま引きずっているのです。時々、メールなどで文字化けすることがありますよね。あの原因のほとんどはこの文字コードの違いによるものです。
<?php require_once('doctor_tbls.php'); // 文字コードのセット function charSetUTF8() { mb_language( "Japanese" ); mb_internal_encoding( "UTF-8" ); mb_http_output( 'UTF-8' ); }; charSetUTF8(); // HTML出力時のQuoting関数 function _Q( $argv ) { return htmlentities( $argv, ENT_QUOTES, 'UTF-8' ); } $db_host = '127.0.0.1'; $db_user = 'root'; $db_password = 'root'; $site_url = 'http://localhost/KAMAKURA_Live_SSL/'; $db_name_sessions = "kamakura_live"; //接続 try { // MySQLサーバへ接続 $pdo = new PDO( "mysql:host=$db_host;dbname=$db_name_sessions;charset=utf8", $db_user, $db_password ); // 注意: 不要なspaceを挿入すると' $db_host'のようにみなされ、エラーとなる } catch ( PDOException $e ) { die( $e->getMessage() ); } $stmt = $pdo->prepare("SELECT COUNT(*) FROM `doctors` WHERE `email` = :email;"); foreach($doctor_tbls as $doctor_detail) { $stmt->bindValue(":email", $doctor_detail['email'], PDO::PARAM_STR); $flag = $stmt->execute(); $count = $stmt->fetchColumn(); //echo $doctor_detail['email']." ".$count."\n"; if ($count < 1) { $key_list = ""; $value_list = ""; foreach($doctor_detail as $key => $value) { if ($value == '0000-00-00 00:00:00') $value = '2019-01-01 12:00:00'; if (($key != 'id') && ($key != 'on2016') && ($key != 'on2017') && ($key != 'on2018') && ($key != 'on2019') && ($key != 'description') && ($key != 'sponsor')) { $key_list = $key_list.", `".$key."`"; $value_list = $value_list.", '".$value."'"; } } $key_list = substr($key_list, 2); $value_list = substr($value_list, 2); echo "INSERT INTO `doctors` (".$key_list.") VALUES (".$value_list.");"."\n"; } }