php - 爆炸功能后无法将所有行插入mysql

标签 php mysql

我有三个表:

用户:

user_id (int, auto increment, primary key)
username (varchar (100))
(the rest is not immportant)

团队:

team_id(int, auto increment, primary key)
teamname (varchar (100))
(the rest is not important)

团队用户:

team_id int, 
user_id int,
primary key (team_id, user_id),
foreign key (team_id) references teams (team_id),
foreign key (user_id) references users (user_id)

我有一个表单,用户可以在其中创建团队,还可以添加成员名称,这些名称将是逗号分隔的值。

我想要的是将团队详细信息插入团队表和成员名称中,在使用explode并在用户表中找到匹配的user_ids之后,将其与最后创建的团队ID一起插入到team_users中。

到目前为止我所拥有的是:

<?php
session_start();
$conn = mysqli_connect('xxx', 'xxx', 'xxx', 'xxx');

if (!$conn) {
    die("connection failed: ".mysqli_connect_error());
}

$teamname = $_POST['teamname'];
$members = $_POST['members'];
$games = $_POST['games'];
$image = $_POST['image'];

$sql = mysqli_query($conn,"INSERT INTO teams (teamname, games, images, founded) VALUES ('$teamname', '$games', '$image', NOW())");
$id = mysqli_insert_id($conn);

if(!empty($id)) {
    $membernames = explode(',', $members);    
    foreach($membernames as $value) { 

        $sql = mysqli_query($conn,"insert into team_users (team_id, user_id)
        select teams.team_id, users.user_id
        from teams, users where users.username = '$value' and teams.team_id = '$id'");

    } 

    if(false === $sql) die(mysqli_error($conn));
}
?>

我的问题是,当我执行此操作时,它仅将第一个添加的用户的 ID 插入 team_users 中,但是用户可以添加多个用户作为团队的成员。为什么我做错了?

我在 team_users 表中创建了一个用户名列,而是删除了 user_id 并更改了查询(插入 team_users (team_id, username) 值 ('$id', '$value') 以查看是否会插入所有成员名称确实如此。但我不需要 team_users 表中的用户名,我需要他们的 user_id。

我对 PHP 和 Mysql 很陌生,我读过很多论坛和类似的问题,但找不到答案。我几天来一直坚持这个问题,有人可以帮忙吗?非常感谢!

最佳答案

尝试将其添加为 foreach 中的第一行环形。

$value = trim($value);

这是因为,当您分解逗号分隔的字符串时,很可能会添加空格。

例如当我们写一个逗号分隔的字符串"Adam, Eve, William"时,注意每个逗号后面的空格。所以当你用逗号爆炸时,数组将有 Adam , <space>Eve , <space>William

所以仅在您的查询中 AdamEve 开始工作和William开头添加了一个空格。

修剪时,空格会被删除。希望这能解释。

关于php - 爆炸功能后无法将所有行插入mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41711999/

相关文章:

php - 大海捞针,针是针的阵列

php - 从mysql的不同列中选择值,我怎么知道哪个是哪个?

php - 回复 : whats-the-best-approach-should-i-adopt-for-this-php-problem

php - 无法使用 rpc xml 将内容写入文件

php - 安全下载文件

mysql 删除存在同名的数据库

java - Spring Boot 不会在 MySQL Workbench 上创建表

php - PDO:在未知查询上使用 fetchAll

php - TWIG 语法不显示字段 IF

php - 无法扫描既不是文件也不是文件夹的文件夹内的类