我试图完成一个php脚本,该脚本从一个服务器连接上的表中选择所有内容,并将所有内容插入到第二个服务器上的相同(转储克隆)表中。我的连接成功,我的选择查询工作,但现在我只需要找出我的INSERT部分。这是为了从服务器2上的相同表更新服务器2上的表,所以我只想插入自上次插入以来发生的新记录。
我知道的一种方法我可以检查记录是否存在是通过检查@protocal
+(void)methodA;
@end;
这是一个自动递增主键。对于那些知道如此问题的人来说,我觉得这应该很简单。同样,我想连接到服务器1,从cdrdb.session中选择所有内容,获取结果,连接到服务器2并将它们插入到相同的ambition.session表中(如果它们不存在)。
尝试通过从服务器1上的表中选择所有内容并将获取的行循环到服务器2上插入的路径:
SESSIONID
如果我没有执行fetch / foreach循环,而我只是执行了select查询,这是我最初使用的insert语句,即使我知道 // Create connection
$conn = new mysqli($servername, $username, $password);
$conn2 = new mysqli($servername2, $username2, $password2);
//Query to select * from Session table on server 1
$query1 = "select * from cdrdb.session";
$results = mysqli_query($conn1, $query1);
foreach ($results as $r => $result) {
//This is where I would create my insert statement for each numRow from the fetch but I
would need to check ```SESSIONID``` to see if it exists on server 2. If not, insert it.
}
在这里的语法中使用不正确:
where not exists
我不知道以这种方式做到这一点,但没有做foreach循环。最后,如果我知道PHP语法,我可以执行我的select查询,然后使用INSERT IGNORE INTO ambition.session。但是,由于cdrdb.session有35列,我不知道如何插入所有列。我不知道是否有办法做到这一点,而不会将VALUES(?,?,?,?)带有35个问号。
我真的认为foreach循环的第一个选项是要走的路,我只需要帮助完成循环并构建我的INSERT。
有人可以确认这是最好的方式并帮助我充实吗?
答案 0 :(得分:0)