テーブルが小さく、古いデータを削除して新しいデータをリモートサーバーに挿入するだけの簡単な汎用ソリューションがある場合は、テーブルデータを使用して長い文字列を作成できますWebサービス経由で送信します。ここにその実装方法を示します。あなたは大きなテーブルを持っている場合は、私はあなたが新しいデータのみを送信する必要があると思い
function DumpTableIntoString($tableName, $includeFieldsHeader = true)
{
global $adoConn;
$recordSet = $adoConn->Execute("SELECT * FROM $tableName");
if(!$recordSet) return false;
$data = "";
if($includeFieldsHeader)
{
// fetching fields
$numFields = $recordSet->FieldCount();
for($i = 0; $i < $numFields; $i++)
$data .= $recordSet->FetchField($i)->name . ",";
$data = substr($data, 0, -1) . "\n";
}
while(!$recordSet->EOF)
{
$row = $recordSet->GetRowAssoc();
foreach ($row as &$value)
{
$value = str_replace("\r\n", "", $value);
$value = str_replace('"', '\\"', $value);
if($value == null) $value = "\\N";
$value = "\"" . $value . "\"";
}
$data .= join(',', $row);
$recordSet->MoveNext();
if(!$recordSet->EOF)
$data .= "\n";
}
return $data;
}
// NOTE: CURRENTLY FUNCTION DOESN'T SUPPORT HANDLING FIELDS HEADER, SO NOW IT JUST SKIPS IT
// IF NECESSARRY
function FillTableFromDumpString($tableName, $dumpString, $truncateTable = true, $fieldsHeaderIncluded = true)
{
global $adoConn;
if($truncateTable)
if($adoConn->Execute("TRUNCATE TABLE $tableName") === false)
return false;
$rows = explode("\n", $dumpString);
$startRowIndex = $fieldsHeaderIncluded ? 1 : 0;
$query = "INSERT INTO $tableName VALUES ";
$numRows = count($rows);
for($i = $startRowIndex; $i < $numRows; $i++)
{
$row = explode(",", $rows[$i]);
foreach($row as &$value)
{
if($value == "\"\\N\"")
$value = "NULL";
}
$query .= "(". implode(",", $row) .")";
if($i != $numRows - 1)
$query .= ",";
}
if($adoConn->Execute($query) === false)
{
return false;
}
return true;
}
:ここまで完璧なソリューション、私はウェブサイト間の小さなシンプルなテーブルを転送する方法を一例に過ぎないことに注意してください。リモートサーバーに最新のタイムスタンプを要求し、メインサーバーから新しいデータをすべて読み込み、一般的な方法(上記のように)または非汎用的な方法でデータを送信します(この場合は、別途各テーブルの機能)。