使用PHP将复选框值插入MySQL数据库
各位 我知道这是一个久远的话题,但我到处都找过了,无法解决它 我的网页中有一系列复选框,需要将这些值插入数据库 就我所读到的,应该这样做:使用PHP将复选框值插入MySQL数据库,php,mysql,checkbox,Php,Mysql,Checkbox,各位 我知道这是一个久远的话题,但我到处都找过了,无法解决它 我的网页中有一系列复选框,需要将这些值插入数据库 就我所读到的,应该这样做: <tr> <td class="titulofila">Salón Completo con: </td> <td> <table width="100%"><tr><td> <
<tr>
<td class="titulofila">Salón Completo con: </td>
<td>
<table width="100%"><tr><td>
<label>
<input name="equipSalon[]" type="checkbox" id="equipSalon[]" value="mesa" />
mesas </label>
</td><td>
<label>
<input name="equipSalon[]" type="checkbox" id="equipSalon[]" value="sillas" />
sillas </label>
</td><td>
<label>
<input name="equipSalon[]" type="checkbox" id="equipSalon[]" value="sofa" />
sofá</label>
</td></tr></table>
</td>
</tr>
我有更多的复选框,但这不起作用,只是说“您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,在第21行的“”附近使用正确的语法”
如果有人想查看完整的index.html和php文件,可以在这里查看:表单从第147行开始。以及此处的PHP文件:
提前感谢。复选框只有勾选后才会过账。因此,如果未勾选该复选框,is将不会出现在
$\u POST
中。此外,通常不应为复选框提供任何值。而是使用名称来区分它们
在数据库中,我通常用Tinyint表示复选框,存储1表示选中,存储0表示未选中
// If your checkbox name is foo, this will convert it
// into a value that can be stored in the database
$foo = isset($_POST['foo']) ? 1 : 0;
还要注意,html要求ID是唯一的。因此,您不能有多个具有相同id的元素。您应该清理输入以防止sql注入。对数据库中的用户输入使用mysql\u real\u escape\u string()
更新
主要问题是查询在最后一行缺少“)
”。
查询应该如下所示
$query = "INSERT INTO markers (ciudad,
zona,address,name,
telefono,email,piso,
tipo,erasmus,nhabitaciones,
plazas,equipHabita,nbanos,
salon,cocina,electrodomesticos,
garaje,internet,calefaccion,
sexo,precio,superficie,otros,
fecha,lat,lng)
VALUES ('{$_POST['ciudad']}','{$_POST['zona']}',
'{$_POST['address']}','{$_POST['name']}','{$_POST['telefono']}',
'{$_POST['email']}','{$_POST['piso']}','{$_POST['tipo']}',
'{$_POST['erasmus']}','{$_POST['nhabitaciones']}',
'{$_POST['plazas']}','{$equipHabitaF}',
'{$_POST['nbanos']}','{$equipSalonF}',
'{$equipCocinaF}','{$equipElectroF}','{$_POST['garaje']}',
'{$_POST['internet']}','{$_POST['calefaccion']}',
'{$_POST['sexo']}','{$_POST['precio']}',
'{$_POST['superficie']}','{$_POST['otrosF']}',
'{$_POST['fecha']}','{$_POST['lat']}',
'{$_POST['lng']}')";
mysql_query($query, $link);
注意查询最后一行的结尾“
)
”。还请注意,在变量中创建这样的查询,允许您输出创建的查询,这样您就可以查看到底发送到MySQL的是什么,还可以在不同的环境中测试您的查询(即在phpmyadmin或任何其他数据库管理工具中)。除非您应该删除ID属性。您只需要对name属性执行此操作。如果您确实想查看引擎盖下发生的事情,请转储POST变量:。。。然后使用ViewSource查看CommentsHanks中的调试以获得答案,但我正在尝试存储复选框的值,而不是它们是否被选中。我想用复选框的值创建一个字符串,并将它们存储到de MySQL数据库中。这可能吗?您可以在$\u POST
中为选中的复选框获取适当的值,但如果未选中该复选框,则将永远不会发布该复选框。因此,您必须实现逻辑来查看哪些值已发布,并使用该逻辑来确定哪些值尚未发布。您应该更仔细地查看他发布的代码。他引用的是$_POST值,所以无论复选框是否选中,都不会有任何问题。@periklis,引用值是好的,但输入也需要转义以防止sql注入。我完全同意你的观点,但这与用户的问题有什么关系?
$query = "INSERT INTO markers (ciudad,
zona,address,name,
telefono,email,piso,
tipo,erasmus,nhabitaciones,
plazas,equipHabita,nbanos,
salon,cocina,electrodomesticos,
garaje,internet,calefaccion,
sexo,precio,superficie,otros,
fecha,lat,lng)
VALUES ('{$_POST['ciudad']}','{$_POST['zona']}',
'{$_POST['address']}','{$_POST['name']}','{$_POST['telefono']}',
'{$_POST['email']}','{$_POST['piso']}','{$_POST['tipo']}',
'{$_POST['erasmus']}','{$_POST['nhabitaciones']}',
'{$_POST['plazas']}','{$equipHabitaF}',
'{$_POST['nbanos']}','{$equipSalonF}',
'{$equipCocinaF}','{$equipElectroF}','{$_POST['garaje']}',
'{$_POST['internet']}','{$_POST['calefaccion']}',
'{$_POST['sexo']}','{$_POST['precio']}',
'{$_POST['superficie']}','{$_POST['otrosF']}',
'{$_POST['fecha']}','{$_POST['lat']}',
'{$_POST['lng']}')";
mysql_query($query, $link);