如何使用 php 向 sql 数据库中的多对多关系 table 插入记录?

How to insert records to a many to many relationship table on an sql database using php?

我刚开始 PHP,遇到 php 的问题,下面显示的 sql 命令不执行(将记录插入多对多关系 table) 当用 php 调用它时,当用 mysql 命令行界面手动插入它时它工作得很好。 我使用 $ds 和 $da(手动输入)而不是使用会话来确保命令被执行。请注意,我还有其他 mysql 查询,并且在通过 php 使用与下面显示的相同的数据库连接执行时工作得很好。

$connectionStatua = connect_db();
mysqli_query($connectionStatus, $sql);

$username = $_SESSION["username"];
$ds = "dekna";
$da = "dsa.jpg";
$query="INSERT INTO `tbl_users_files` (`user_ID`, `file_ID`)
SELECT `u.id`, `f.id` FROM `users` as `u` CROSS JOIN `tbl_uploads` as `f`
WHERE `username` = '$ds' AND `file` = '$da'";
mysqli_query($connectionStatus, $query);

请看一下我的table的结构: mySql tables structure

此外,可以在此处查看该命令在 mysql cli 中完美运行的证据:("dekna" 的 ID 为 1 而 dsa.jpg 的 ID 为 44 - 因此请查看最后记录): mySql cli - Command

步骤 1> 从用户 table:

获取用户的 (Select) id

步骤 2> 从 tbl_uploads table 获取 (Select) 文件 ID:

步骤 3> 插入 user_ID(来自步骤 1)和 file_ID(来自步骤 2)到 tbl_users_files table:

$connectionStatua = connect_db();
mysqli_query($connectionStatus, $sql);

$username = $_SESSION["username"]; //or $ds = "dekna";
$da = "dsa.jpg";

$user_ID = $file_ID = null;

//STEP 1
$query1="SELECT id FROM 'users' WHERE username = '$username'";
$result1 = mysqli_query($connectionStatus, $query1);

if( mysqli_num_rows($result1 ) > 0)
  {
    while ($row = mysqli_fetch_array($result1)) {
     $user_ID = $row['id'];
    }
      
  }
//STEP 2
$query2="SELECT id FROM 'tbl_uploads' WHERE file = '$da'";
$result2 = mysqli_query($connectionStatus, $query2);

if( mysqli_num_rows($result2 ) > 0)
  {
    while ($row = mysqli_fetch_array($result2)) {
     $file_ID = $row['id'];
    }
      
  }
//STEP 3
$query3 ="INSERT INTO tbl_users_files (user_ID, file_ID) values('$user_ID' , '$file_ID')";

mysqli_query($connectionStatus, $query3);