如何使用预准备语句一次在mysql数据库中插入多行?

时间:2011-12-02 20:09:14

标签: php mysql prepared-statement

我试图在this question中使用staticsan的答案来准备陈述。 让我们举个例子:

$stmt = $mysqli->prepare("INSERT INTO something (userid, time, title) VALUES (?, ?, ?)");
$stmt->bind_param('iis', $userid, time(), $title);
$stmt->execute();

在staticsan的回答中,将数组添加到mysql语句中,这样我们最终只需一个语句就可以将多个数据插入到数据库中。 在我的例子中如何做到这一点?

3 个答案:

答案 0 :(得分:6)

这完全有效:

$stmt = $mysqli->prepare("INSERT INTO something (userid, time, title) VALUES (?, ?, ?)");

$stmt->bind_param('iis', $userid, time(), $title);
$stmt->execute();

$stmt->bind_param('iis', $userid, time(), $title);
$stmt->execute();

$stmt->bind_param('iis', $userid, time(), $title);
$stmt->execute();

$stmt->bind_param('iis', $userid, time(), $title);
$stmt->execute();

您可以在每次插入,绑定和执行时覆盖您的数组值。它不会像您链接的示例中的批量插入一样快,但它会更安全。

答案 1 :(得分:2)

您可以使用此处提到的代码构建预准备语句,

PDO Prepared Inserts multiple rows in single query

PHP逻辑有点像,

[https://jsfiddle.net/rcet5btw/][1]

答案 2 :(得分:-1)

查询如下所示:

INSERT INTO people (name, age)
  VALUES
  ('Helen', 24),
  ('Katrina', 21),
  ('Samia', 22),
  ('Hui Ling', 25),
  ('Yumie', 29)