$ _POST []的默认值有问题; 所以我有一个带有文本框的html表单,并将信息发送到php脚本.php脚本有一个sql查询,正在发送到我的数据库.但如果我的html格式的文本框为空,则查询没有值.所以我想将我的帖子设置为默认值0,因此它至少返回一个值.
所以这里是一个html表单的例子(这不是我的执行脚本.只是一个例子.
好的,所以这个脚本将发送id和测试文本框将始终具有数字值.它将信息发送到testscript.php
这是testscript.php示例
$conn = mysqli_connect('host', 'dbuser', 'dbpass', 'dbname'); $id = $_POST['id']; $test = $_POST['test']; $sql = "INSERT INTO test_table (id, test) VALUES ($id, $test)"; if (mysqli_query($conn, $query)) { echo "Success"; } else { echo "Failed" . mysqli_error($conn); }
好吧,现在如果我将我的html表单提交到php脚本而不向文本框插入任何文本,查询将如下所示
INSERT INTO test_table (id, test) VALUES ( , )
但查询应该是这样的
INSERT INTO test_table (id, test) VALUES (0, 0)
所以.我知道我可以在html标签中使用value属性但是然后该值将在文本框中可见,我不想要那样.
我知道我可以做一个if语句来制作这样的默认值
if (isset($_POST['test'])) { $test = $_POST['test']; } else { $test = 0; }
但现在的问题是,如果每个文本框和我的html表单的语句都有超过100个文本框,我就必须这样做.所以我不想为每个文本框制作一个if语句,因为那时我的脚本会变大,这需要几个小时.
那么有没有办法为所有文本框设置默认值而不使用php中的if statment或html格式的value属性?
我知道这似乎很痛苦,但你必须检查所有输入是否有效.您可以使用这样的三元运算符来简化代码量.
$id = isset($_POST['id']) ? $_POST['id'] : 0; $test = isset($_POST['test']) ? $_POST['test'] : 0; ....
不,它不会花费数小时甚至数百个.
为了减少对代码的痛苦,可以使用PHP的变量循环的功能
最痛苦的部分是创建一个包含所有字段名称的数组
$fields = array('id', 'test', 'extra', 'more', ..., 'one_hundred');
然后遍历该数组创建变量名称,同时转义字符串 - 如果它们在那里 - 否则设置值0(零).您可能希望/需要将其设置为""(空字符串)
foreach($fields as $field_name) { ${$field_name} = isset($_POST[$field_name]) ? mysqli_real_escape_string($conn, $_POST[$field_name]) : 0; }
您现在可以使用变量$ id,$ test,$ extra,$ more,....,$ one_hundred.