カテゴリー別アーカイブ: MySQL

XAMPPでMySQLのデータベースを複製する方法


ローカルテストでMySQLのデータベースを複製する機会があったので、その備忘録。

①コマンドプロンプトを起動する

②mysqlコマンドが有効な階層に移動する
cd C:xamppmysqlbin

③コピー元データベースをバックアップに保存する
mysqldump -u ユーザ名 -p -r backup.sql -l コピー元データベース名

④パスワードを聞かれるので、
C:xamppphpMyAdminconfig.inc.php内の
$cfg[‘Servers’][$i][‘password’]の値を入力する。
(※パスワードの値が空の場合は何も入力せずEnterキー)

⑤コピー先データベースを新規作成する
mysql -u ユーザ名 -p -e “CREATE DATABASE コピー先データベース名”

⑥パスワードを聞かれるので、④と同じパスワードを入力する

⑦コピー先データベースにバックアップしたデータを追加する
mysql -u root -p –default-character-set=utf8 コピー先データベース名 < backup.sql (※default-character-setはデータベースに合わせて(sjisやutf8に)変更すること) ⑧パスワードを聞かれるので、④と同じパスワードを入力する これで複製完了。

AjaxでMySQLからデータを取得してhtmlに反映するjQueryを使った簡単サンプル(自分メモ)


①PHPが動作する、②PHPのDBモジュールが使える、③jQueryが使える
この3つの条件が揃っていれば、簡単にMySQLからhtml内にデータを呼ぶことができます。

もちろんMySQLが使える環境で、かつ呼び出されるhtmlとSQLの文字コードが同じことが大前提ですが。
一番いいのは、文字コードがUTF-8に揃っていることですかね。そう考えると条件多いな。。

デモ画面

▼hoge.html(body内)

<div id="search_data"></div>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="hoge.js"></script>

▼hoge.js
※headに書く場合はfunction以外をonloadで記述

var search_msg_data;
$("#search_data").html('Now Loading...');
$.ajax({
type: "GET",
url: "hoge.php",
success: function(msg){
search_msg_data = msg;
setTimeout('search_json()', 1000); // タイムラグ表示(Now Loading確認用)
//search_json(); // すぐに表示
}
});
function search_json(){
var get_json = eval("("+search_msg_data+")");
if(get_json.results == null){
$("#search_data").html("該当するデータは見つかりませんでした。");
}
else{
var hash = get_json["results"];
var search_html = "";
for(var i in hash){
search_html += '<dt>' + hash[i].name + '</dt>';
search_html += '<dd>' + hash[i].address + '</dd>';
}
$("#search_data").html('<dl>' + search_html + '</dl>');
}
}

▼hoge.php

<?php
require_once("DB.php");
$seaver_name = $_SERVER&#91;'SERVER_NAME'&#93;;
if($seaver_name == "localhost"){ // ローカルドメイン指定(test.hoge.jp)
$dbUserPass = "root";
$dbHost = "localhost";	// ホスト名
$dbName = "データベース名";
}
else{
$dbUser = "ユーザー名";
$dbPass = "パスワード";
$dbUserPass = $dbUser . ":" . $dbPass;
$dbHost = "mysql.xxxxx.ne.jp";	// ホスト名
$dbName = "データベース名";
}
$dbType = "mysql";
$dbTable = "テーブル名";
// データベース接続
$db = DB::connect("$dbType://$dbUserPass@$dbHost/$dbName");
if (DB::isError($db)){ 
die($db->getDebugInfo());
}
// クエリ発行
$sql = "SET NAMES utf8"; // UTF8の場合
$result = $db->query($sql);
$sql = "SELECT * FROM `$dbTable` ORDER BY name LIMIT 0 , 100";
// SQL文発行
$result = $db->query($sql);
if (DB::isError($result)) {
die ($result->getDebugInfo());
}
$i=1;
while ($rs = $result->fetchRow(DB_FETCHMODE_ASSOC)){
// テーブルの中身がidとnameとaddressの場合
$array_data[strval($i)] = array(
"id" => $rs['id'],
"name" => $rs['name'],
"address" => $rs['address']
);
// htmlで出力する場合
//echo "{$rs['id']}:{$rs['name']}:{$rs['address']}<br>";
$i++;
}
$array_all = array( "results" => $array_data);
print json_encode($array_all); // JSON出力
@$result->free();
$db->disconnect();
?>