我有两个表: 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());
任何帮助将不胜感激。谢谢!
答案 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中完成。不想跳进那场辩论。我只想命名绑定参数。