我尝试 运行 我的 "form" 但它停留在第二页空白页并且没有将数据传递到我的第三页

I try to run my "form" but it stuck at the second page with a blank page and did not pass the data to my third page

这是我的 php 编码。我从我的模板表单中得到了这个。

最奇怪的是,当我尝试从我的模板 运行 编码时,我得到了输出并检索了数据,但是当我尝试 运行 将编码转换为我的项目分配结果是空白页。

 <?php
    include"conn.php";
    $conn = connect();
    $db = connectdb();

    $wardID =$_REQUEST["wardID"];
    $RequestName = $_REQUEST["RequestName"];
    $Department =$_REQUEST["Department"];
    $Position = $_REQUEST["Position"];
    $Date = $_REQUEST["Date"];
    $TypeOfRequest = $_REQUEST["TypeOfRequest"];
    $PleaseSpecify = $_REQUEST["PleaseSpecify"];
    $DateRequire = $_REQUEST["DateRequire"];
    $DateReturn = $_REQUEST["DateReturn"];

    mysqli_select_db($conn,"misadmin") or die (mysqli_connect_error()."\n");

    //select from the table student
    $query = "select * from misform" ;
    //to return the query that has been request from the database 
    $result = $conn ->query($query);

    //Fetch a result row as an associative array
    $row=mysqli_fetch_assoc($result);
    //Select a MySQL database
    mysqli_select_db($conn,"misadmin")or die (mysqli_connect_error()."\n");

    $insert ="insert into misform(WardID,RequestName,Department,Postion,Date,TypeOfRequest,PleaseSpecify,DateRequire,DateReturn) values ('$wardID','$RequestName','$Department','$Position','$Date','$TypeOfRequest','$PleaseSpecify','$DateRequire','$DateReturn')";
    $rowinsert =$conn ->multi_query($insert) or die (mysqli_connect_error()."\n");

    header("Location:requestform3.php");
    ?>

这是我的连接

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
$host_user="localhost";
$user_user="root";
$password_user="";

function connect (){
    $conn =mysqli_connect("localhost","root","") or die (mysqli_connect_error()."/n");
return $conn;
}

function connectdb(){
    $conndb="misadmin";
    return $conndb;
}
?>
</body>
</html>

这是我的 html

<body>
<form id="requestform" action="requestform2.php" method="post" >
<div><center><table border = "0" cellspacing="0" cellpadding"4"><tr><td>
<fieldset>
<legend>Request Form</legend>
<div id="errorDiv"></div>

<table><tr>
<td><label for="wardID">Ward ID:*</label></td>
<td><input type="text" id="wardID" name="wardID">
<span class="errorFeedback errorSpan" id="WardIDError"> Ward ID is required</span></td>
</tr>

<tr>
<td><label for="RequestName">Request Name:</label></td>
<td><input type="text" id="RequestName" name="RequestName"></td>
</tr>

<tr>
<td><label for="Department">Department:</label></td>
<td><input type="text" id="Department" name="Department"></td>
</tr>

<tr>
<td><label for="Position">Position:</label></td>
<td><input type="text"id="Position" name="Position"></td>
</tr>

<tr>
<td><label for="Date">Date:</label></td>
<td><input type="date" id="Date" name="Date"></td>
</tr>

<tr>
<td><label for="request">Type of request:* </label></td>
<td><select name="TypeOfRequest" id="request">
<option></option>
<option>Hardware</option>
<option>Software</option>
<option>Network</option>
<option>Others</option></select>
<span class="errorFeedback errorSpan" id="requestError">Please choose one</span>
</td></tr>

<tr>
<td></td>
<td><textarea name="PleaseSpecify" id="specify"> Please Specify </textarea>
<span class="errorFeedback errorSpan" id="specifyError">you not specify yet!</span>
</td></tr>

<tr>
<td><label for="DateRequire">Date Require:</label></td>
<td><input type="date" id="DateRequire" name="DateRequire">
</td></tr>

<tr>
<td><label for="DateReturn">Date Return:</label></td>
<td><input type="date" id="DateReturn" name="DateReturn">
</td></tr>

OUTPUT

1) INSERT中的Postion sql 语句似乎不正确。

Unknown column 'Postion' in 'field list'

我通过使用发现了这一点:

$rowinsert = $conn->multi_query($insert) or die($conn->error . "\n");

而不是:

$rowinsert = $conn->multi_query($insert) or die(mysqli_connect_error() . "\n");

2) 当要处理header(Location:...)时,会出现以下警告:

( ! ) Warning: Cannot modify header information - headers already sent by (output started at .../conn.php:9) in .../requestform2.php on line 32

问题是:当 header(Location:...) 被处理时,PHP 引擎发现一些东西已经被发送到客户端,例如到浏览器,以便显示。这是不允许的。在您的代码中出现这种情况是因为您在 "conn.php" 中有 HTML 代码。这被认为是对客户端的输出,因此是不允许的。所以,"conn.php" 应该只是:

<?php
    $host_user="localhost";
    $user_user="root";
    $password_user="";

    function connect (){
        $conn =mysqli_connect("localhost","root","") or die (mysqli_connect_error()."/n");
        return $conn;
    }

    function connectdb(){
        $conndb="misadmin";
        return $conndb;
    }
?>

我是怎么发现的?我启用了错误报告和显示。所以我使用了这个语句:

error_reporting(E_ALL);
ini_set('display_errors', 1);

将它们放在文件"errorReporting.php"中,并在开发时将其包含在"conn.php"之前。如果您的网站正在制作中,请不要包含它!如果您不选择显示错误,您只会收到一个空白页面,而不知道例如为什么没有重定向到第三页。

建议:

错误 + 异常处理是应用程序中最重要的部分之一,应该非常正确地实现。随着用户输入的过滤和清理。所以:

  • 使用预处理语句来避免 MySQL 注入!
  • 使用异常处理始终捕获应用抛出的异常。

查看我发布的完整示例(OOP 和过程)并尝试应用我展示的步骤:

  • MySQLi with prepared statements and exception handling

但我建议您改用 PDO 而不是 MySQLi。为此,我也发布了一个相应的例子:

祝你好运!