像单独的行一样将数组插入数据库

时间:2018-05-03 12:39:06

标签: php mysql

很抱歉,如果这是重复的,但我无法使用类似问题的答案达到结果。

这是我的情况: 我有一个表(users_temp),其中包含1列 - Users_id; 我有一系列值,例如 - $usersIds = [1,2,3,4,5];

我想将此数组插入到我的表中并创建5个新行。 我这样尝试smth,但它不起作用:

$newdata = "'" . implode("','", $usersIds) . "'";
db_query("INSERT INTO db.users_temp (user_id) VALUES ($newdata)");

请帮帮我吗?

2 个答案:

答案 0 :(得分:2)

假设$ userIds字段是安全的(所有INT),那么只需修改内爆即可。

$newdata = implode("),(", $usersIds);
db_query("INSERT INTO db.users_temp (user_id) VALUES ($newdata)");

您可能希望添加一个检查,表明该数组的元素数超过0个。

答案 1 :(得分:0)

在单个语句中插入多行:

SQL:

insert into users_temp (user_id)
values (?), (?), (?) [...]

PHP:

$userIds = array(1, 2, 3, 4, 5);
$placeholders = rtrim(str_repeat('(?),', count($userIds)), ',');
$sql = "insert into users_temp (user_id) values ($placeholders)";
$stmt = $pdo->prepare($sql);
$stmt->execute($userIds);

您的代码可以像上面那样构建占位符字符串。