Php 将随机行从一个MySQL表复制到另一个具有不同模式的MySQL表

Php 将随机行从一个MySQL表复制到另一个具有不同模式的MySQL表,php,mysql,sql,database,cron,Php,Mysql,Sql,Database,Cron,我有一个名为locations的数据库表,它有许多位置遵循此模式:lid(PID)、name、totalVotes、timeSince,我想从该表中随机选择4行,并将它们复制到另一个模式为sid(PID)、lid(Foreign)、vots的表中。我想每天设置一个cron作业来完成这项工作,所以我首先编写一个PHP脚本,然后在以后使用cron作业进行设置 我在让脚本运行时遇到问题,因为所选数据库中没有反映任何更改。以下是我到目前为止在copy.php中的尝试: <?php // cre

我有一个名为
locations
的数据库表,它有许多位置遵循此模式:
lid(PID)、name、totalVotes、timeSince
,我想从该表中随机选择4行,并将它们复制到另一个模式为
sid(PID)、lid(Foreign)、vots
的表中。我想每天设置一个cron作业来完成这项工作,所以我首先编写一个PHP脚本,然后在以后使用cron作业进行设置

我在让脚本运行时遇到问题,因为所选数据库中没有反映任何更改。以下是我到目前为止在
copy.php
中的尝试:

<?php
  // create connection
  mysql_connect("localhost","root",NULL);
  @mysql_select_db("Locations") or die("Unable to select db");

  // this SQL statement moves 4 random rows from locations to selected table
  $sql = "INSERT INTO selected (lid) SELECT lid FROM locations WHERE lid IN (SELECT lid FROM locations ORDER BY RAND() LIMIT 4);";


  mysql_query($sql);
  mysql_close();
  echo "all good";
?>

当我刷新我的
localhost/copy.php
时,我得到了“一切正常”的消息,但在我选择的
表中再次没有任何更改。

你能试试吗? 第一个选择是不需要的,你认为你有一个坏的在查询的结尾

INSERT INTO selected (lid) (SELECT lid FROM locations ORDER BY RAND() LIMIT 4)

首先,你是想移动还是复制?我只在您的示例中看到复制。@Piskvor copy,我的道歉使用
mysql\u impacted\u rows()
获取真实性并检查错误。你在这里得到了一个假阳性,这意味着你有错误,但你没有检查它们。“而且你认为你在查询结束时有一个坏的
,-
限制4);“;
是有效的语法。