很抱歉,如果这是重复的,但我无法使用类似问题的答案达到结果。
这是我的情况:
我有一个表(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)");
请帮帮我吗?
答案 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);
您的代码可以像上面那样构建占位符字符串。