ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルで mysql 同期を実装する方法

php_PHP チュートリアルで mysql 同期を実装する方法

WBOY
WBOYオリジナル
2016-07-21 15:43:13783ブラウズ

要件を取得した後、これら 2 つの Web サイトの MYSQL データベースにはリモートからアクセスできないことがわかりました (セキュリティ第一)。そこで、私が普段データを一括入力するために使っているCSVファイルのことを思い出しました。そこで
CSV インポートとエクスポートを使用してみてください。
インポートのフレームワークは以下の通りです:
1 まずデータをCSV形式でエクスポートします。
ファイルを作成して中国のサーバーに配置します: csv.php。これは実際には、データベース、テーブル名、SQL ステートメントを通じてデータを取得するエクスポート関数です。
csv.php

コードをコピー コードは次のとおりです:

/**
* データベース内のテーブルを CSV ファイルに出力します
*
* @param string Mysql データベースホスト
* @param string データベース名
* @param string データベース内のテーブル名
* @param string データベース接続ユーザー名
* @param string データベース接続パスワード
* @param string データベーステーブル名
* @param string データベース
* @param string エラーページ
* @param string SQL 文
*
* @return text CSV 形式の内容に戻る
*
* @アクセス公開
*/
function PMA_exportData(host,db,user,pass,filename,table, crlf, error_url , sql_query) {
what="csv";
csv_separator=",";
csv_escaped=" "; (「データベースに接続できません。エラー コードは次のとおりです:」
mysql_select_db(db);
fields_cnt = mysql_num_fields(result); ";
//fp = fopen(filename , 'w');
//データのフォーマット
while (row = mysql_fetch_row(result)) {
schema_insert = '';
for (j = 0; j if (!isset( row[j]) || is_null(row[j])) {
schema_insert .="NULL"; //null 値を置き換えるために使用するもの
} elseif (row[j] == '0' || row[j ] != '') {
// loic1: フィールド値を引用符で囲みます
if (csv_enclosed == '') {
schema_insert .= row[j] ; else {
schema_insert .= csv_enclosed
.str_replace(csv_enclosed , csv_escaped . csv_enclosed, row[j])
}
} else {
schema_insert .= '';
if (j schema_insert .= csv_separator;
} //
の終了// fwrite(fp,schema_insert . csv_terminated)
cc.=schema_terminated . (結果); / fclose(fp);
return cc;

/**
* アップロードされたファイルからテーブルにデータをインポートします
*
* @param string Mysql データベースホスト
* @param string データベース名
* @param string データベース内のテーブル名
* @param string database 接続ユーザー名
* @ param string データベース接続パスワード
* @param string データベーステーブル名
*
* @return bool 実行が成功したかどうか
*
* @access public
*/
function UploadFileOfCsv(host,db,user,pass,table,content){
mysql_connect(host, user,pass) または die("データベースに接続できません。エラー コードは次のとおりです: " . mysql_error());
result = mysql_query("select * from table"); (結果);
test2=array(array()); log("抽出されたデータは次のとおりです:
".content); ",'a'); fwrite(fd1,content); fclose(fd1 );
fp = fopen("C:test.csv", "r");
while (buffer = fgets(fp,4096) )
{
i++;
tmp_arr =explode(",",buffer);
if(trim(tmp_arr[0]) == ""){
echo "";
exit;
}
query = "INSERT INTO db.table";
query .= 値( ";
for(q=0;qif(q==fields_cnt-1){
tmp=tmp_arr[q];
query.="'tmp');";
} else{
tmp=tmp_arr[q];
query.="'tmp',";
}
}//end for(q=0;
log2(query);
mysql_query(query);
} (fp);
return "OK";
unlink("C:test.csv");
function log2(event = null){
// グローバルログイン; {
now = date("Y-M-d H:i:s");
fd = fopen ("C:log.html",'a');
log = now." "._SERVER["REMOTE_ADDR"] ." - イベント
";
fwrite(fd,log);
fclose(fd);
}
}
?>


3 関数を呼び出してエクスポートを実行します
中国サーバー上に別のファイル test_export.php を作成し、前の csv.php の関数を呼び出し、データを CSV に変換し、フォームの
textera に一時的に保存します。フォームの送信場所に注意してください:
コードをコピーします。 コードは次のとおりです:
require_once("csv.php");
host="localhost"; "project";
user="root ";
pass="";
//tb_contact テーブルのデータを CSV ファイルとしてエクスポートします
filename = 'file4.csv'; ,pass, filename,"tb_project_dvp", "", "test.php", "select * from tb_project_dvp");
handle = fopen(filename, "rb");
contents = fread(handle, filesize (filename)); ;
fclose(ハンドル)
?>







< /form>


米国のサーバーで、アップロードされたデータを受け入れるように次のファイルを設定します。ファイル名は test_import.php です。



コードをコピーします。

コードは次のとおりです。
require_once("csv.php"); host="localhost" if( _POST['action']=="1"){
content=_POST['textarea'];
echo UploadFileOfCsv(host,db,user,pass,"tb_project_dvp",content);
最後に Windows-xp/nt/03 コントロール パネルを使用します。これにはタスク プランが付属しており、中国サーバーの test_export.php ファイルをスケジュールして実行するだけです。



http://www.bkjia.com/PHPjc/320777.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/320777.html

技術記事

要件を取得した後、これら 2 つの Web サイトの MYSQL データベースにはリモートからアクセスできないことがわかりました (セキュリティ第一)。そこで、私が普段データを一括入力するために使っているCSVファイルのことを思い出しました。だからCを使ってみてください...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。