使用PHP将复选框值插入MySQL数据库

时间:2012-02-04 17:34:06

标签: php mysql checkbox

大家。

我知道这是一个受到很好影响的主题,但我到处寻找并且无法解决它。

我的网页上有一系列复选框,需要将值插入数据库。

对于我所读过的内容,应该这样做:

<tr>
        <td class="titulofila">Sal&oacute;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&aacute;</label>
        </td></tr></table>
        </td>
    </tr>

然后,在提交按钮所用的PHP脚本中:

 $equipSalonF=mysql_real_escape_string(implode(',', $_POST['equipSalon']));
mysql_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']}'",$link);

我有更多这个复选框,这不起作用,只是说“你的SQL语法有错误;请查看与你的MySQL服务器版本对应的手册,以便在第21行使用正确的语法” “

如果有人想查看完整的index.html和php文件,可以在这里找到它们:http://paste.ideaslabs.com/show/8qEHDnsZdr表单从第147行开始。这里的PHP文件:http://paste.ideaslabs.com/show/IJFLSHM7Ka

提前致谢。

1 个答案:

答案 0 :(得分:2)

复选框仅在勾选时发布。因此,如果未选中该复选框,则$_POST中不会显示该复选框。此外,您通常不应给复选框任何值。而是使用名称来区分它们。

在数据库中,我通常表示带有tinyints的复选框,并且存储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_real_escape_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或任何其他数据库管理中)工具)。