php中登陆同步两个站点,如何使用PHP同步两个数据库表?

感谢大家,基于你的所有帮助,我能够编写一个PHP类,它将表A中的任何列复制到表B(如果它们还没有):

class MatchTable

{

var $_table_one_name;

var $_table_two_name;

var $_table_one_db_user;

var $_table_one_db_pass;

var $_table_one_db_host;

var $_table_one_db_name;

var $_table_two_db_user;

var $_table_two_db_pass;

var $_table_two_db_host;

var $_table_two_db_name;

var $_table_one_columns = array();

var $_table_two_columns = array();

var $_table_one_types = array();

var $_table_two_types = array();

var $_table_one_link;

var $_table_two_link;

var $_isTest;

function MatchTable($isLive = true)

{

$this->_isTest = !$isLive;

}

function matchTables($table1, $table2)

{

$this->_table_one_name = $table1;

$this->_table_two_name = $table2;

if(isset($this->_table_one_db_pass))

{

$this->db_connect('ONE');

}

list($this->_table_one_columns,$this->_table_one_types) = $this->getColumns($this->_table_one_name);

if(isset($this->_table_two_db_pass))

{

$this->db_connect('TWO');

}

list($this->_table_two_columns,$this->_table_two_types) = $this->getColumns($this->_table_two_name);

$this->addAdditionalColumns($this->getAdditionalColumns());

}

function setTableOneConnection($host, $user, $pass, $name)

{

$this->_table_one_db_host = $host;

$this->_table_one_db_user = $user;

$this->_table_one_db_pass = $pass;

$this->_table_one_db_name = $name;

}

function setTableTwoConnection($host, $user, $pass, $name)

{

$this->_table_two_db_host = $host;

$this->_table_two_db_user = $user;

$this->_table_two_db_pass = $pass;

$this->_table_two_db_name = $name;

}

function db_connect($table)

{

switch(strtoupper($table))

{

case 'ONE':

$host = $this->_table_one_db_host;

$user = $this->_table_one_db_user;

$pass = $this->_table_one_db_pass;

$name = $this->_table_one_db_name;

$link = $this->_table_one_link = mysql_connect($host, $user, $pass, true);

mysql_select_db($name) or die(mysql_error());

break;

case 'TWO';

$host = $this->_table_two_db_host;

$user = $this->_table_two_db_user;

$pass = $this->_table_two_db_pass;

$name = $this->_table_two_db_name;

$link = $this->_table_two_link = mysql_connect($host, $user, $pass, true);

mysql_select_db($name) or die(mysql_error());

break;

default:

die('Improper parameter in MatchTable->db_connect() expecting "one" or "two".');

break;

}

if (!$link) {

die('Could not connect: ' . mysql_error());

}

}

function getColumns($table_name)

{

$columns = array();

$types = array();

$qry = 'SHOW COLUMNS FROM '.$table_name;

$result = mysql_query($qry) or die(mysql_error());

while($row = mysql_fetch_assoc($result))

{

$field = $row['Field'];

$type = $row['Type'];

/*

$column = array('Field' => $field, 'Type' => $type);

array_push($columns, $column);

*/

$types[$field] = $type;

array_push($columns, $field);

}

$arr = array($columns, $types);

return $arr;

}

function getAdditionalColumns()

{

$additional = array_diff($this->_table_one_columns,$this->_table_two_columns);

return $additional;

}

function addAdditionalColumns($additional)

{

$qry = '';

foreach($additional as $field)

{

$qry = 'ALTER TABLE '.$this->_table_two_name.' ADD '.$field.' '.$this->_table_one_types[$field].'; ';

if($this->_isTest)

{

echo $qry.'
';

}

else

{

mysql_query($qry) or die(mysql_error());

}

}

}

/**

* End of Class

*/

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值