循环 PHP 脚本以插入多个用户的数据


looping a php script to insert data for multiple users

我有两个表:phpbb_sn_fms_groupsphpbb_fms_user_groups,我想使用以下两个查询插入其中,但是第一个问题是我不可能为每个user_id手动运行两个查询 ~1000 次(56 到 1060)。第二个问题是,当 php 脚本插入每个user_id时,我需要将第一个查询(表:phpbb_sn_fms_groups)中的自动递增fms_gid插入到第二个查询(表:phpbb_sn_fms_users_group)的fms_id中。

// user_id: 56 through 1060
// fms_gid in the table phpbb_sn_fms_users_group needs the unique fms_gid for each row from the table phpbb_sn_fms_groups because it doesn't autoincrement.
$result = mysql_query("INSERT INTO phpbb_sn_fms_groups (fms_gid, user_id, fms_name, fms_clean, fms_collapse) VALUES ('autoincrementednumberthatdoesntneedtobeinserted', '56', 'Staff', 'staff', '0')")
or die(mysql_error());
$result = mysql_query("INSERT INTO phpbb_sn_fms_users_group (fms_gid, user_id, owner_id) VALUES ('inserttheautoincrementednumberfromfms_gidinphpbb_sn_fms_groups', '2', '56')")
or die(mysql_error());

任何帮助将不胜感激。谢谢!

这是PDO的好时机。有关连接信息,请参阅 http://php.net/manual/en/book.pdo.php,但类似

$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

首先选择您需要查询的用户。

$stmt = $pdo->prepare("SELECT id, name FROM users WHERE id BETWEEN 56 AND 1060");
$stmt->execute();
$result = $stmt->fetchAll();

或者,如果字面意思是 56 到 1060,您可以使用 for 循环。

然后循环遍历这些结果以执行

foreach($result as $row) {
    $stmt1 = $pdo->prepare("INSERT INTO phpbb_sn_fms_groups (fms_gid, user_id, fms_name, fms_clean, fms_collapse) VALUES ('autoincrementednumberthatdoesntneedtobeinserted', :user_id , 'Staff', 'staff', '0')");
    $stmt1->bindParam(":user_id", $row['id']);
    $stmt1->execute();
    //get last inserted id.
    $inserted_id = $pdo->lastInsertId();
    $stmt2 = $pdo->prepare("INSERT INTO phpbb_sn_fms_users_group (fms_gid, user_id, owner_id) VALUES (:last_id, '2', :user_id)");
    $stmt2->bindParam(":last_id", $inserted_id);
    $stmt2->bindParam(":user_id", $row['id']);
    $stmt2->execute();
}

希望这能让你开始。也可以在 mysqli 中完成。不想跳入这场辩论。我只是喜欢命名绑定参数。