$_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的variable variables循环功能
最痛苦的部分是创建一个包含所有字段名称的数组
$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.
标签:php,sql,html
来源: https://codeday.me/bug/20190528/1168394.html