そうとう大変でした

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";
    }
}

投稿者: Dr_Radialist (KAMAKURA & SAPPORO)

The most experienced coronary and valvular interventional cardiologist in the world.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA