PHP:很难同时理解POST和GET


PHP: trouble with understanding POST and GET at the same time

我有一个网页,我问从用户输入,当他点击添加按钮,它应该从用户插入到数据库的输入。我一直认为你不能同时使用POST和GET,但根据这个和这个答案,它应该是可能的。然而,我似乎不能让他们的解决方案工作。

脚本在数据库中插入一些内容(生成一个id),但是seriesName字段仍然为空。

PHP脚本:
<?php
$con=mysqli_connect("localhost","user","passwd","database");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
$issueSeries = mysqli_real_escape_string($con, $_GET['addSeries']);
mysqli_query($con,"INSERT INTO series (seriesName) VALUES ('$issueSeries')");
mysqli_close($con);
?>
HTML:

<div id="issueAddInformationLayout">
    <div id="issueAddCredits">
        <form action="addIssue.php" method="post">
            <table>
                <tr id="lblAddCreator">
                    <td><p>NR</p></td>
                    <td><p>Series</p></td>
                    <td><p>Volume</p></td>
                    <td><p>Title</p></td>
                    <td><p>Publisher</p></td>
                </tr>
                <tr>
                    <td><input type="text" id="addNR" size="3%"/></td>
                    <td><input type="text" id="addSeries" size="25%" /></td>
                    <td><input type="text" id="addVolume" size="25%" /></td>
                    <td><input type="text" id="addTitle" size="30%" /></td>
                    <td><input type="text" id="addPublisher" size="30%" /></td>
                </tr>
            </table>
            <table>
                <tr id="lblAddCreator">
                    <td><p>Writer</p></td>
                    <td></td>
                    <td></td>
                </tr>
                <tr id="txtAddCreator">
                    <td><input type="text" id="addWriter1" size="30%" /></td>
                    <td><input type="text" id="addWriter2" size="30%" /></td>
                    <td><input type="text" id="addWriter3" size="30%"/></td>
                    <td><input type="text" id="addWriter4" size="30%"/></td>
                </tr>
                <tr id="lblAddCreator">
                    <td><p>Editor</p></td>
                    <td></td>
                    <td></td>
                </tr>
                <tr id="txtAddEditor">
                    <td><input type="text" id="addEditor1" size="30%" /></td>
                    <td><input type="text" id="addEditor2" size="30%"/></td>
                    <td><input type="text" id="addEditor3" size="30%"/></td>
                    <td><input type="text" id="addEditor4" size="30%"/></td>
                </tr>
                <tr id="lblAddCreator"> 
                    <td><p>Letterer</p></td>
                    <td></td>
                    <td></td>
                </tr>
                <tr id="txtAddLetterer">
                    <td><input type="text" id="addLetterer1" size="30%"/></td>
                    <td><input type="text" id="addLetterer2" size="30%"/></td>
                    <td><input type="text" id="addLetterer3" size="30%"/></td>
                    <td><input type="text" id="addLetterer4" size="30%"/></td>
                </tr>
                <tr id="lblAddCreator">
                    <td><p>Colourist</p></td>
                    <td></td>
                    <td></td>
                </tr>
                <tr id="txtAddColourist">
                    <td><input type="text" id="addColourist1" size="30%"/></td>
                    <td><input type="text" id="addColourist2" size="30%"/></td>
                    <td><input type="text" id="addColourist3" size="30%"/></td>
                    <td><input type="text" id="addColourist4" size="30%"/></td>
                </tr>
                <tr id="lblAddCreator">
                    <td><p>Cover Artist</p></td>
                    <td></td>
                    <td></td>
                </tr>
                <tr id="txtAddCoverArtist">
                    <td><input type="text" id="addCoverArtist1" size="30%"/></td>
                    <td><input type="text" id="addCoverArtist2" size="30%"/></td>
                    <td><input type="text" id="addCoverArtist3" size="30%"/></td>
                    <td><input type="text" id="addCoverArtist4" size="30%"/></td>
                </tr>
                <tr id="lblAddCreator">
                    <td><p>Inker</p></td>
                    <td></td>
                    <td></td>
                </tr>
                <tr id="txtAddInker">
                    <td><input type="text" id="addInker1" size="30%"/></td>
                    <td><input type="text" id="addInker2" size="30%"/></td>
                    <td><input type="text" id="addInker3" size="30%"/></td>
                    <td><input type="text" id="addInker4" size="30%"/></td>
                </tr>
                <tr id="lblAddCreator">
                    <td><p>Penciler</p></td>
                    <td></td>
                    <td></td>
                    </tr>
                <tr id="txtAddPenciler">
                    <td><input type="text" id="addPenciler1" size="30%"/></td>
                    <td><input type="text" id="addPenciler2" size="30%"/></td>
                    <td><input type="text" id="addPenciler3" size="30%"/></td>
                    <td><input type="text" id="addPenciler4" size="30%"/></td>
                </tr>
                <tr id="lblAddCreator">
                    <td><p>Trade Paper Back</p></td>
                    <td><p id="lblAddCover">Cover</p></td>
                </tr>
            </table>
            <table>
                <tr id="txtAddTPB">
                    <td><input type="text" id="addTPB" size="30%"/></td>
                    <td>
                        <p id="btnAddCover" enctype="multipart/form-data" action="parse_file.php" method="post"> 
                            <input type="file" name="uploaded_file">
                        </p>
                    </td>
                    <td>
                        <id="btnAddIssue"><input type="submit" value="Add">
                    </td>
                </tr>
            </table>
        </form>
    </div>
</div>

HTML似乎有些混乱,所以我添加了完整的HTML代码。请记住:这纯粹是为我自己,我真的不关心的东西,如表是过时的:)

在HTTP中,你不能同时使用GET和POST,但是你可以做一个POST请求,它有一个查询字符串作为URL的一部分。

PHP将用请求体填充$_POST,用查询字符串填充$_GET,即使请求是POST请求。

由于表单是POST,因此输入的数据将被放入正文而不是查询字符串(因此将出现在$_POST而不是$_GET中)。

如果addSeries的值是fixed,那么你可以像这样使用$_GET:

 <form id="btnAddIssue" action="addIssue.php?addSeries=someValue" method="post">

,但是由于您正在接受用户输入,因此在将输入放入表单后使用$_POST读取值

您的输入在表单之外,因此没有提交。

<form id="btnAddIssue" action="addIssue.php" method="post">
    <input type="text" id="addSeries" size="25%" />
   <input type="submit" value="Add">
</form>

你需要改变$_GET['addSeries']$_POST['addSeries'],因为你的表单被设置为POST(或改变你的表单通过GET提交)。

您的输入在表单标签之外,当用户提交表单时不会考虑。

<form id="btnAddIssue" action="addIssue.php" method="post">
   <input type="text" id="addSeries" size="25%" />
   <input type="submit" value="Add">
</form>

因为你是在php端发送post请求所以$_POST是用来引用输入的值

此外,有时最好使用$_REQUEST,它包含来自GET和POST的数据,这样每次都能从请求中获得适当的数据

$issueSeries = mysqli_real_escape_string($con, $_REQUEST['addSeries']);

您的文本文件放置在表单之外,因此(该文本文件的)任何值都不会提交给操作页面。

改为

<form id="btnAddIssue" action="addIssue.php" method="post">
<input type="text" id="addSeries" size="25%" />
<input type="submit" value="Add">
</form>

也可以使用$_POST,或者您甚至可以使用$_REQUEST(您可以同时使用$_REQUEST获取和post变量)