Php 无法从HTML表单复选框中获取要插入到MySQL数据库列中的值

Php 无法从HTML表单复选框中获取要插入到MySQL数据库列中的值,php,html,mysql,arrays,checkbox,Php,Html,Mysql,Arrays,Checkbox,我是这个网站的新手,只想提前对您的帮助表示感谢。因此,我有一个表单,它链接到一个单独的PHP脚本,表单上的所有内容都可以插入到数据库中,除了复选框。我在下面的代码中收到了“Undefined index:”错误,我尝试了很多教程,但这是我迄今为止所能做到的 以下是我的复选框HTML代码: <input type="checkbox" name="problem_list[]" value="Handle Bars">Handle Bars<br> <

我是这个网站的新手,只想提前对您的帮助表示感谢。因此,我有一个表单,它链接到一个单独的PHP脚本,表单上的所有内容都可以插入到数据库中,除了复选框。我在下面的代码中收到了“Undefined index:”错误,我尝试了很多教程,但这是我迄今为止所能做到的

以下是我的复选框HTML代码:

<input type="checkbox" name="problem_list[]" value="Handle Bars">Handle Bars<br>
        <input type="checkbox" name="problem_list[]" value="Frame">Frame<br>
        <input type="checkbox" name="problem_list[]" value="Pedals">Pedals<br>
        <input type="checkbox" name="problem_list[]" value="Chain">Chain<br>
        <input type="checkbox" name="problem_list[]" value="Brakes">Brakes<br>
        <input type="checkbox" name="problem_list[]" value="Gears">Gears<br>
        <input type="checkbox" name="problem_list[]" value="Tires">Tires<br>
$problem_list = ""; // declare problem_list
if (isset($_POST["problem_list"])) 
{$problem_list = implode(" ,",$_POST['problem_list']);
}
$sql = "INSERT INTO bike_repairs (employee_id, date, first_name, last_name, phone, email, make, model, color, overall_problem_area, specific_issue) 
VALUES ('$value16', '$value5', '$value6', '$value7', '$value8', '$value9', '$value10', '$value11', '$value12', '".$problem_list."', '$value14')";

简单地说,表单工作,数据库连接建立,所有其他表单元素都在变量中进行了说明,插入也很好。所以这是我最不需要弄清楚的事情。再次感谢您的帮助

在if条件之前声明$problem\u列表

 $problem_list="";
  if (isset($_POST["problem_list"])) 
    {
       $problem_list = implode(" ,",$_POST['problem_list']);
    }
    $sql = "INSERT INTO bike_repairs (employee_id, date, first_name, last_name, phone, email, make, model, color, overall_problem_area, specific_issue) 
    VALUES ('$value16', '$value5', '$value6', '$value7', '$value8', '$value9', '$value10', '$value11', '$value12', '".$problem_list."', '$value14')";

如果你像这样编辑,你得到了什么

if ( !empty($_POST["problem_list"]) ) 
{
    $problem_list = implode(" ,",$_POST['problem_list']);
    $sql = "INSERT INTO bike_repairs (employee_id, date, first_name, last_name, phone, email, make, model, color, overall_problem_area, specific_issue) 
    VALUES ('$value16', '$value5', '$value6', '$value7', '$value8', '$value9', '$value10', '$value11', '$value12', '".$problem_list."', '$value14')";
}
else echo 'problem_list is empty';

您已将问题列表检查框声明为数组(name='problem\u list[])。所以,只需检查它是否是一个数组并将其内爆

$problem_list = $_POST["problem_list"];
if(is_array($problem_list)) {
$selected_problems = implode(" ,",$problem_list);
} else {
$selected_problems = "No problems!";
}

$problem_list = implode(" ,",$_POST['problem_list']);

$problem_list = mysql_real_escape_string($problem_list , $connection); // IMPORTANT

$sql = "INSERT INTO bike_repairs (employee_id, date, first_name, last_name, phone, email, make, model, color, overall_problem_area, specific_issue) 
VALUES ('$value16', '$value5', '$value6', '$value7', '$value8', '$value9', '$value10', '$value11', '$value12', '".$problem_list."', '$value14')";
在执行查询之前,千万不要忘记转义字符串值,以防止sql注入攻击

看看:


您的“总体问题区域”字段的数据类型是什么?危险:您很容易受到需要从中删除的数据类型的影响。不要将CSV数据放入数据库列中,您有一个关系数据库。这非常有效,非常感谢我的朋友!谢谢你的输入,我会看一看,并相应地更新代码。