首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PHP中使用冗长或复杂的表单执行POST查询的最佳方式?

在PHP中使用冗长或复杂的表单执行POST查询的最佳方式?
EN

Stack Overflow用户
提问于 2020-04-21 19:42:05
回答 2查看 37关注 0票数 0

我有几个表单的内容,用户可以编辑,一个简单的例子是profile.php的五个字段,用户可以更改其中的三个(目前):姓名,姓氏和地址。html表单从sql中提取它们的现有数据,并将其显示在可编辑的文本框中。

下面是我如何获取各种变量的方法:

代码语言:javascript
运行
复制
<?php
//PHP to submit content of profile fields.

if($_SERVER["REQUEST_METHOD"] == "POST"){
//Set ID for insert statement
$id=$rows['id'];
//Get name from form
if(empty($_POST['name'])){
$name = $rows['name'];
}
elseif($_POST['name'] == $rows['name']){
    $name = $rows['name'];
}
else{
        $name = $_POST['name'];
            print $name;
}
//Get Surname from form
if(empty($_POST['surname'])){
$name = $rows['surname'];
}
elseif($_POST['surname'] == $rows['surname']){
    $surname = $rows['surname'];
}
else{
        $surname = $_POST['surname'];
}
//Get Address from form
if(empty($_POST['address'])){
$name = $rows['address'];
}
elseif($_POST['address'] == $rows['address']){
    $address = $rows['address'];
}
else{
        $address = $_POST['address'];
}


$sql    = "UPDATE usr SET name = ?, surname = ?, address = ?  
where id = ?"

(然后提交查询的其余代码如下,除非你们需要,否则我不会在这里包括它。这是基本的mysqli内容。)

上面的内容感觉非常不稳定和冗长,有没有更好的方法来做到这一点,特别是当表单变长的时候?实际上,我将" if ( empty )“写得尽可能简单,以避免必须为每个函数创建一个错误回显,因为如果用户试图输入空字段,该函数基本上会在加载时保留表单中的内容。

我感觉,一旦我开始添加生日、电话号码和其他内容,查询将变得非常长,sql update语句将会疯狂地使用"ssssss“等。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-21 20:38:00

您可以使用键构建一个数组,然后遍历它们,并从Post your value中提取,然后使用有效数据构建另一个数组。

代码语言:javascript
运行
复制
$keys = ['name', 'surname', 'address'];
$final = [];
foreach ($keys as $key) {
    $final[$key] = $_POST[$key] ?? $rows[$key];
}
票数 1
EN

Stack Overflow用户

发布于 2020-04-21 20:22:45

你也可以使用一个三元函数:

代码语言:javascript
运行
复制
$name = (empty($_POST['name'])? $rows['name'] : $_POST['name']);

例如。如果对empty()的调用为真(表单变量为空),它将从$rows返回变量,否则将从表单返回变量。

查看表单域与数据库域是否相同的额外代码有点浪费,因为如果相同,则使用表单域和使用数据库域没有区别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61342708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档