PHP HTML 复选框仅提交最后一个值 MySQL 问题


PHP HTML checkbox only submitting last value MySQL issue

我的网站上有一个群聊功能,人们可以通过选择 HTML 复选框来添加朋友,因此可以一次添加多个朋友。但是,当我的PHP脚本将数据插入MySQL数据库时,只添加了最后一个值。例如,如果用户选择 3 个朋友,PHP 会用逗号分隔他们的 ID(因为它将作为数组存储在数据库中);所以它会像 ,1,2,3 一样显示。但是,当我插入MySQL时,只有",3"正在提交。

用于从 HTML 组装数据的 PHP 代码复选框:

$invite = $_POST['invite'];
  if(empty($invite)) 
  {
    //echo("You didn't select any friends.");
  } 
  else
  {
    $N = count($invite);
    //echo("You selected $N friends(s): ");
    for($i=0; $i < $N; $i++)
    {
      $userinput = ("," . $invite[$i]);
    }
  }

MySQL 查询:

$sql = "INSERT INTO group_chat (title, created_date, last_modified, created_by, user_array) VALUES ('$title', now(), now(), '$logOptions_id', '$logOptions_id$userinput')";

$logOptions_id 包含当前用户的 ID。

我之前已经回显了$userinput变量,它看起来应该是:,1,2,3(添加到 MySQL 时,开头的逗号与当前用户 ID 分开。

您正在用此行覆盖循环中的值

$userinput = ("," . $invite[$i]);

将其更改为此

$userinput .= ("," . $invite[$i]);

请记住在追加变量之前初始化变量$userinput以避免undefined variable警告。

您可以使用 implode 创建逗号分隔的 id 字符串

$userinput = implode(',', $invite); // output as 1,2,3

如果要向其添加当前用户 ID

$userinput = $logOptions_id.','.implode(',', $invite);