当前位置:  开发笔记 > 编程语言 > 正文

$ _POST []的默认值;

如何解决《$_POST[]的默认值;》经验,为你挑选了1个好方法。

$ _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属性?



1> DFriend..:

我知道这似乎很痛苦,但你必须检查所有输入是否有效.您可以使用这样的三元运算符来简化代码量.

$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.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有