PHP:同时理解POST和GET的麻烦

时间:2014-05-20 12:01:19

标签: php html mysql

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

脚本在db中插入一些内容(生成了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代码。请记住:这纯粹是为了我自己,我并不关心那些过时的表格。)

4 个答案:

答案 0 :(得分:1)

在HTTP中,您无法同时使用GET和POST,但您可以发出一个POST请求,其中包含查询字符串作为URL的一部分。

PHP将使用查询字符串填充$_POST请求的正文和$_GET,即使请求是POST请求也是如此。

由于表单为POST,因此来自输入的数据将放入正文而非查询字符串(因此将显示在$_POST而不是$_GET)。

如果addSeries的值已修复,那么您可以将其与$_GET一起使用,如下所示:

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

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

答案 1 :(得分:0)

您的输入不在您的表单中,因此无法提交。

<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提交)。

答案 2 :(得分:0)

您的输入位于表单标记之外,当用户提交表单时将不会考虑该标记。

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

既然你在php端发出了一个帖子请求,那么引用该输入的值就是$ _POST

此外,有时最好使用$ _REQUEST,它包含来自GET和POST的数据,因此每次都有来自请求的正确数据

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

答案 3 :(得分:0)

您提交的文本不在表单之内,因此(提交的文本文件)的任何值都不会提交到操作页面。

将其更改为

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

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