如何使用PHP将一个SQL命令的返回值插入到另一个表中

如何使用PHP将一个SQL命令的返回值插入到另一个表中,php,mysql,Php,Mysql,我有两台服务器,分别托管两个不同的站点和两个独立的数据库。但是,一些数据需要共享——因此有一个CRON运行,将数据从第一个站点复制到第二个站点。这两个站点过去运行在同一台服务器上,但是现在我们已经将它们分开了,所以我试图修改PHP来处理这个问题 下面是我遇到问题的代码: $sql = "SELECT * FROM site1.events"; $events = mysql_query($sql, $site1db); $sql = "INSERT INTO site2.events SE

我有两台服务器,分别托管两个不同的站点和两个独立的数据库。但是,一些数据需要共享——因此有一个CRON运行,将数据从第一个站点复制到第二个站点。这两个站点过去运行在同一台服务器上,但是现在我们已经将它们分开了,所以我试图修改PHP来处理这个问题

下面是我遇到问题的代码:

$sql = "SELECT * FROM site1.events";
$events = mysql_query($sql, $site1db);  

$sql = "INSERT INTO site2.events SELECT * FROM $events";
$doIt = mysql_query($sql, $site2db);
现在我知道SELECT*fromsite1.events是成功的,但是它不能插入到第二个站点,而且我没有看到任何类型的错误。我以前从来没有写过PHP,这是一个遗留任务,所以如果它是以前讨论过的东西,请给我指出正确的方向


请注意,site2.events在这些命令之前被截断,因此无需进行比较。

您必须逐行进行比较和复制。您现在试图做的事情无法工作。如果数据库运行在同一台服务器上,并且数据库用户可以访问这两个数据库,则可以使用INSERT IGNORE INTO site2.events SELECT*FROM site1.events。这样做的缺点是,主键必须相同,否则会丢失数据


更好的替代方法是,在添加新事件时,让site1向site2执行包含该事件所有信息的回调。

使用mysqli而不是mysql。不太清楚它是如何处理多个服务器的,但您可以看看联邦表。$events是一个mysql资源,我认为您不能将其用作字符串,但是您可以从$sql编写“*”,因为$sql是一个字符串。请注意,您使用的是MySQL,它被认为是使用了MyQuiLi作为@ CeloCo建议或PDO。谢谢,我担心我不得不做一行一行的插入,但希望更好的解决方案。更好的解决方案是修改您的站点以告知事件的发生,并让它们立即添加到数据库中。这样,在您的cron与数据库同步之前,您的站点不会丢失更多的数据,并且您不必进行逐行比较。遗憾的是,在我们的服务器设置中,这是不可能的