循环php脚本为多个用户插入数据

时间:2015-03-11 22:07:15

标签: php mysql

我有两个表: phpbb_sn_fms_groups phpbb_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());

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

1 个答案:

答案 0 :(得分:2)

这是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中完成。不想跳进那场辩论。我只想命名绑定参数。