我正在尝试生成将插入多行的单个插入语句。我有一个值数组,这就是我想要插入到所有使用相同的表中的值userkey。
我尝试使用命名的 PDO 参数并绑定到该参数,然后在执行期间传入角色数组,但这不起作用。所以我转向占位符,但我也无法让它发挥作用。
我称我的函数为addUsersRoles(1, [100,101,102]);
并查看生成的 SQL,我得到:
INSERT user_roles (userkey, roleid) VALUES (?,?),(?,?),(?,?)
我认为这是插入多条记录的正确格式。
基于此,我想要生成的是:
INSERT user_roles (userkey, roleid) VALUES (1,100),(1,101),(1,102)
如何以这种方式将 PDO 绑定到 SQL 语句的强大功能结合起来?
public function addUsersRoles($userkey, $roles = []){
$in = str_repeat('?,', count($roles) - 1) . '?';
$base_user_sql = 'INSERT user_roles (userkey, roleid) VALUES ';
$sql = $base_user_sql;
foreach ($roles as $role) {
//$sql .= "(:USERKEY, $in),"; // Didn't Work
$sql .= "($in),";
}
//Remove trailing comma
$sql = rtrim($sql, ',');
$db = static::getDB();
$stmt = $db->prepare($sql);
//$stmt->bindValue(':USERKEY', $userkey, PDO::PARAM_STR);
return $stmt->execute($roles);
}
慕森王
BIG阳
ITMISS
随时随地看视频慕课网APP