如何使用php将记录插入sql数据库上的多对多关系表中


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

我刚开始使用PHP,遇到了一个PHP问题,在用PHP调用时,下面显示的sql命令无法执行(将记录插入多对多关系表中),而在用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);

请看一下我的表格结构:mySql表结构

此外,可以在这里查看该命令在mysql-cli中完美工作的证据:("dekna"的id为1,而dsa.jpg的id为44,因此请查看最后一条记录):mySql cli-命令

步骤1>从users表中获取(选择)用户的id:

步骤2>从tbl_uploads表中获取(选择)文件id:

步骤3>将user_ID(来自步骤1)和file_ID(源自步骤2)插入tbl_users_files表:

$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);