Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从表单编写PHP更新代码_Php_Mysql - Fatal编程技术网

从表单编写PHP更新代码

从表单编写PHP更新代码,php,mysql,Php,Mysql,就像标题本身告诉我的那样,我想用更短的方式编写soms PHP更新mysql代码 下面是php代码的一个示例块: if ($_SERVER['REQUEST_METHOD'] == 'POST'){ $getid = $_SESSION['id'] if (empty($_POST['name']) { $name = ' ', } if (empty($_POST['firstname']) { $firstname = ' ', } if (empty

就像标题本身告诉我的那样,我想用更短的方式编写soms PHP更新mysql代码

下面是php代码的一个示例块:

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

  $getid = $_SESSION['id']

  if (empty($_POST['name']) {
  $name = ' ',
  }

  if (empty($_POST['firstname']) {
  $firstname = ' ',
  }

  if (empty($_POST['address']) {
  $address = ' ',
  }

  $upregstmt = $dbh->prepare("UPDATE contacts SET c_firstname = ?, c_name = ?, c_address = ? WHERE c_id = ?");  
  $upregstmt->bindParam(1, $firstname);
  $upregstmt->bindParam(1, $name);
  $upregstmt->bindParam(1, $address);
  $upregstmt->bindParam(1, $getid);
  $upregstmt->execute();


}
我有一个更大的表单,其中不是所有的内容都将被填写,并且必须保持为空,所以在这种情况下,我必须使用一个空变量


问题:是否有一个关于这个(一个可以随查询一起发送的参数,例如,它不会给我一个空变量错误?)和其他代码不能写得更小一些的方法

$exludeArray = array("submit");
foreach ($_POST as $key => $value) {
    if (!in_array($key, $excludeArray))
        $upregstmt->bindParam(1, (empty($value) ? " " : $value));
}
它在$\u POST global中循环,排除您不想添加的内容,例如submit按钮


这是未经测试的,但应该会给你一个如何处理这个问题的想法。

你可以从缩写if/else语句(或其他任何名称)开始:
$firstName=(空($\u POST['firstName'])?“:$\u POST['firstName'];
噢,哇!我喜欢“for”和“foreach”的方式正在节省大量代码行…我仍然不知道为什么,但我似乎不能掌握它。我找不到学习使用它的方法。但是你在我的代码中使用它迈出了一大步!foreach循环非常方便,尝试制作一些数组,然后用foreach进行实验。当你看到你可以用它做什么时,你会喜欢它的。