PHP elseif 语句用于表单验证并插入到数据库

标签 php html mysql forms

我正在尝试使我的表单验证和数据库插入脚本正常工作,但再次遇到问题。我正在使用 elseif 语句来执行以下操作:

  1. 检查表单是否确实是由用户单击提交按钮提交的,并且所有数据字段均已填写,如果没有,则发出警告并重定向回表单页面(这是似乎唯一有效的部分)

  2. 如果表单已完全填写并单击提交按钮,则连接到 mysql 服务器并选择 db 或 die 并显示错误消息

  3. 如果有到数据库的连接,则将表单数据插入到表中

我可以阻止输入空字段,但仅此而已,其他一切似乎都会中断。我似乎不明白为什么。 tail -f/var/log/apache2/error.log 不显示任何内容。也许我的事情过于复杂了。我一直使用这个网站作为引用和http://www.w3schools.com/php/php_if_else.asp对于 elseif 语法,新手仍然搞砸了。

这是代码:

<?php
//Form fields passed to variables
$manu = mysql_real_escape_string($_POST['inputManu']);
$model = mysql_real_escape_string($_POST['inputModel']);
$desc = mysql_real_escape_string($_POST['inputDesc']);

//Connect to database using $conn
include ('connection.php');

//Insert record into table 
$sql = "INSERT INTO gear (`id`,`manu`,`model`,`desc`)
      VALUES (NULL,'$manu','$model','$desc')";

//Check for empty fields
if ($_POST['submit']) 
{   
   foreach($_POST as $val) 
{
      if(trim($val) == '' || empty($val))
        {
        die();
      echo "Please complete all form fields!";
      echo "<meta http-equiv='Refresh' content='3; URL=../add.php'>"; 
      //header("Location: ../add.php?error=empty_fields");
        }
    }
}
elseif (!mysqli_query($conn,$sql))
{
  die('Error: ' . mysqli_error($conn));
}
else
{
  //echo "1 record added";
  echo "Success, You added the ".$manu." ".$model."";
  echo "<meta http-equiv='Refresh' content='3; URL=../index.php'>";
}   
mysqli_close($conn);
?>

最佳答案

这是有效的代码,但我确信还可以进行一些改进:

<?php
//Connect to database using $conn
include ('connection.php');

//Form fields passed to variables
$manu = mysqli_real_escape_string($conn, $_POST['inputManu']);
$model = mysqli_real_escape_string($conn, $_POST['inputModel']);
$desc = mysqli_real_escape_string($conn, $_POST['inputDesc']);

//Insert record into table 
$sql = "INSERT INTO gear (`id`,`manu`,`model`,`desc`)
      VALUES (NULL,'$manu','$model','$desc')";

//Check for empty fields
if (isset($_POST['submit'])) 
{   
   foreach($_POST as $val) 
    {
      if(trim($val) == '' || empty($val))
        {
//        echo "Please complete all form fields!";
        echo "<meta http-equiv='Refresh' content='3; URL=../add.php'>"; 
          die('Error: Please complete all form fields!' . mysqli_error());
        }
    }

     if (!mysqli_query($conn,$sql))
     {
     die('Error: ' . mysqli_error($conn));
     }
     else
     {
       //echo "1 record added";
         echo "Success, You added the ".$manu." ".$model."";
         echo "<meta http-equiv='Refresh' content='3; URL=../index.php'>";
     }   
}
else
{
echo "some error";
}

mysqli_close($conn);
?>

关于PHP elseif 语句用于表单验证并插入到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20920340/

相关文章:

php - date() 显示错误的时间

php - yii 在查询后分配动态属性

html - 缺少背景颜色

html - 为什么使用 'focus-within' 的按钮在 iOS 上不起作用

mysql - 如何在mysql中查找重复值和计数

php - 在 PHP 中,我可以在 switch 语句中获取 case 语句的总数吗?

PHP:在 Switch 的情况下有两个值?

HTML Div 不一致地使用 CSS 文件

MySQL 问题 - 我想删除任何括号内的所有文本

带别名的 MySQL Concat(长度)