PHP脚本,在服务器1上选择,如果iD不存在则插入服务器2(即新记录)

时间:2017-09-18 19:06:32

标签: php mysql sql foreach

我们在一台服务器上有一个电话系统数据库,我们克隆/转储到本地服务器,但现在我们需要更新我们的版本。显然,表和模式是相同的,我只想运行这个调度脚本来更新本地表中不存在的新记录(即自上次更新以来创建的记录)。

下面是测试选择/插入块。选择查询最初是在它自己的工作,但现在我已经修改它以使用循环,希望使用numrows和foreach来捕获select中的所有内容。

会话表有大约35列,所以我正在寻找最好的方法,而不必声明每一列。我最初尝试使用重复键更新或使用not exists插入/忽略来执行此操作,但我真的不知道我在做什么。

基本上,一旦我选择了所有内容,如果我的服务器2上的表不包含带有SESSIONID主键的记录,我想插入它。我只需要一些帮助来创建这个循环脚本。

示例:

如果服务器1上的表有2行,其中sessionID为12345,而12346,但我服务器2上的表只有sessionID 12344,我想插入这两个ID的全部记录。

//Defining credentials
$servername = "";
$username = "";
$password = "";

$servername2 = "";
$username2 = "";
$password2 = "";

// Create connection
$conn = new mysqli($servername, $username, $password);
$conn2 = new mysqli($servername2, $username2, $password2);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";

// Check connection2
if ($conn2->connect_error) {
die("Connection failed: " . $conn2->connect_error);
}
echo "Connected successfully";


//Query to select * from Session table on server 1
$query1 = "select * from cdrdb.session";
$results = mysqli_query($conn1, $query1);

foreach ($results as $r => $result) {
  $stmt1 = mysqli_prepare($conn2, "insert into ambition.session a where not 
exists(a.SESSIONID)");
  mysqli_stmt_execute($stmt1) or die(mysqli_error($conn2));
}

0 个答案:

没有答案