更新php脚本中不存在的位置

时间:2017-09-19 03:10:54

标签: php mysql sql database

我试图完成一个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。

有人可以确认这是最好的方式并帮助我充实吗?

1 个答案:

答案 0 :(得分:0)