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

Posted

技术标签:

【中文标题】PHP HTML复选框仅提交最后一个值MySQL问题【英文标题】:PHP HTML checkbox only submitting last value MySQL issue 【发布时间】:2013-09-19 17:16:18 【问题描述】:

我的网站上有一个群聊功能,人们可以通过选择 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 分开。

【问题讨论】:

【参考方案1】:

你正在用这一行覆盖循环中的值

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

改成这个

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

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

【讨论】:

谢谢,这就是答案。 :) @AmalMurali 我会接受答案,但 *** 说我可以在 2 分钟内接受它【参考方案2】:

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

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

如果你想给它添加当前用户ID

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

【讨论】:

@Chibuzo 从数组中创建逗号分隔字符串的替代选项

以上是关于PHP HTML复选框仅提交最后一个值MySQL问题的主要内容,如果未能解决你的问题,请参考以下文章

PHP:如何存储和复选框值并更新它们

多选字段仅提交最后选择的选项

将多个复选框插入数据库 Html Php

MySQL中的HTML复选框更改值

自动提交复选框以保存到 MySQL

提交带有空复选框的 HTML 表单