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

0ve6wy6x  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(315)

抱歉,如果这是一个重复,但我不能达到的结果使用类似的问题的答案。
我的情况是:我有一张table( users_temp )带1列- Users_id ; 我有一个值数组,例如- $usersIds = [1,2,3,4,5] ;
我想将这个数组插入我的表并创建5个新行。我试过这么做,但没用:

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

你能帮帮我吗?

roejwanj

roejwanj1#

要在一条语句中插入多行,请执行以下操作:
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);

您的代码可以如上所述构建占位符字符串。

flvlnr44

flvlnr442#

你能做到的

$usersIds = [1,2,3,4,5];

foreach ($usersIds as $user_id) {
  db_query("INSERT INTO db.users_temp (user_id) VALUES ($user_id)");
}
2exbekwf

2exbekwf3#

假设$userids字段是安全的(所有int),那么只需修改一下你的内爆。

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

您可能需要添加一个检查,以确保数组中有超过0个元素。

相关问题