如何使用来自另一个数据查询的结果和来自同一页面的帖子将多行插入数据库


How can I insert multiple rows into a database using results from another data query and posts from the same page?

我正试图从我的数据库中收集随机数量的成员,获得他们的id号并使用它们将多个条目插入到使用id和来自同一页面的一些发布信息的另一个表中。

当前(无效)代码:

if($_POST["Submit"] == "Send Mail") {
   $rid = $_SESSION["userid"];
   //is amount of members sending to
   $to = $_POST["credits"];
   $messaging = $_POST["message"];
   $sub = $_POST["subject"];
   ///need all ids for amount of membes sending to    
   $getodds = mysql_query("select Id from `oto_members` ORDER BY RAND() Limit '$to';");
   ...
   ///insert a new line for each member sending to using ids from $getodds query
   @mysql_query("INSERT INTO `mp_creditmail` (`Id`, `message`, `subject`, `read`) VALUES ('$values', '$messaging', '$sub', no) or die(mysql_error());
}

在SQL中可以通过查询在一个表中插入多条记录。您可以查看以下链接。http://dev.mysql.com/doc/refman/5.0/es/insert-select.html

查看示例可以使用下面的语句来满足您的需要。

///insert a new line for each member sending to using ids from $getodds query
@mysql_query("INSERT INTO 'mp_creditmail' ('Id', 'message', 'subject', 'read') SELECT oto_members.Id, '$messaging', '$sub', 'no' FROM oto_members ORDER BY RAND() Limit '$to';");

我想回答你的问题,但是你的代码/问题有点不清楚。我将假设您希望在第二个查询中使用'$values'所在的$getodds中获得的id。此外,如果您使用的是php版本5或更新版本,则应该使用未弃用的查询函数,如mysqli_query()

foreach($getodds as $values) {
    @mysql_query("INSERT INTO `mp_creditmail` (`Id`, `message`, `subject`, `read`) 
    VALUES ($values, $messaging, $sub, 'no')" or die(mysql_error());
}

mysqli_query()看起来像这样

$link = mysqli_connect("localhost", "my_user", "my_password", "database");
foreach($getodds as $values) {
    $query = "INSERT INTO `mp_creditmail` (`Id`, `message`, `subject`, `read`)
        VALUES ($values, $messaging, $sub, 'no')";
    $result = @mysqli_query($link, $query)
}

希望这对你有帮助。如果没有,试着澄清你的问题。