PHP/HTML 表单进入数据库复选框验证

标签 php html mysql forms checkbox

我正在尝试编写一段 PHP 代码,让网页将信息从 FORM 插入到数据库中。 我已设法将表单中的信息正确插入到数据库列中,但是当用户没有选择“复选框”的所有四个项目时,对于每个未选择的复选框项目,我都会收到以下错误消息。

“注意:未定义索引:ESPAOL 位于 C:\xampp\htdocs\PHP\index1f.php 第 66 行”

有人告诉我“isset”句子可能是解决方案,但我自己无法弄清楚。

HTML

<br>
Idiomas:<br>
ESPAÑOL:<INPUT type="checkbox" name="ESPANOL" value="s">
INGLES:<INPUT type="checkbox" name="INGLES" value="s"><br>
FRANCES:<INPUT type="checkbox" name="FRANCES" value="s">
PORTUGUES:<INPUT type="checkbox" name="PORTUGUES" value="s">
<br>
<小时/>

PHP

mysql_query("insert into alumnos2
(NOMBRE,APELLIDO,GENERO,ESTADO_CIVIL,ESTUDIOS,ESPANOL,INGLES,PORTUGUES,FRANCES,CLAVE)
    values('$_REQUEST[NOMBRE]','$_REQUEST[APELLIDO]','$_REQUEST[GENERO]','$_REQUEST[ESTADO_CIVIL    ]','$_REQUEST[ESTUDIOS]','$_REQUEST[ESPANOL]','$_REQUEST[INGLES]','$_REQUEST[PORTUGUES]','$_    REQUEST[FRANCES]','$_REQUEST[CLAVE]')",$x)
<小时/>

注意:信息无论如何都会插入数据库中。

最佳答案

您的查询包含很多列,因此难以阅读。我会将列名称和值放入一个数组中,并使用它来构造查询。这种方法还可以轻松地仅填充某些值,而让其余值回退到默认值(例如 NULL):

$values = array();

if (isset ($_REQUEST['ESPANOL'])) {
  $values['ESPANOL'] = "''"; /* Indicating true */
}
if (isset ($_REQUEST['INGLES'])) {
  $values['INGLES'] = "''";
}
/* ... */

$col_string = implode (',', array_keys ($values));
$val_string = implode (',', $values);

$query = "INSERT INTO alumnos2 ($col_string) VALUES ($val_string)";

另外:

您不应该使用已弃用的 mysql 扩展。使用PDOmysqli相反。

关于PHP/HTML 表单进入数据库复选框验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24600899/

相关文章:

php - MySQL错误: Cannot add or update a child row: a foreign key constraint fails

c++ - 如何使用局部变量作为 MySQL 查询的一部分 (Qt C++)

mysql - MySQL 上的 0.07 秒查询在 MariaDB 上需要 11.68 秒?

javascript - 插入内联元素并向左移动动画

mysql - Laravel 可选 where() 查询

php - 如何在 Symfony 2.8 中的表单存储库中获取用户对象

php - 防止 Laravel 向数据透视表添加多条记录

php - Eloquent 模型中的 Laravel 关系

html - A 标签上的下载属性在 IE 中不起作用

javascript - 如何将 GET 值附加到页面上每个链接的末尾