Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.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_Html_Database_Pdo - Fatal编程技术网

如何使用PHP搜索数据库中的特定行?

如何使用PHP搜索数据库中的特定行?,php,html,database,pdo,Php,Html,Database,Pdo,如何从HTML页面中的表单进行搜索并在同一HTML页面中显示结果?当我尝试运行表明inputPackageID未定义的代码时,我遇到了一个错误。我怎样才能解决这个问题。似乎无法从表单中识别变量。请帮忙 这是我的密码。如果你不明白我的问题,你可以问我你不清楚的地方 <div class="main"> <div class="col-md-12"> <div class="row"> <div class="

如何从HTML页面中的表单进行搜索并在同一HTML页面中显示结果?当我尝试运行表明inputPackageID未定义的代码时,我遇到了一个错误。我怎样才能解决这个问题。似乎无法从表单中识别变量。请帮忙

这是我的密码。如果你不明白我的问题,你可以问我你不清楚的地方

<div class="main">
    <div class="col-md-12">
        <div class="row">
            <div class="container">

        </div>

        <div class="search center-block col-md-6" align="center">
        <p>
            Want to track your package? <br />
            Enter your Package ID(PID)
        </p>
        <form method="post" action="trackShipment.php">
        <div class="form-group">

            <label class="sr-only" for="inputPackageID"></label>
            <input type="search" name="inputPackageID" class="form-control edit-form-control" id="inputPackageID" placeholder="PID">
        </div>
        <div class="modal-footer">
          <input type="submit" class="btn btn-primary" name="submit" />
        </div>
        </form>
    </div>


        <div class="col-md-8" align="center">
        <h2>Well, Here is your package!</h2>
                    <?php
                        include '../includes/connection.php';
                        //include 'phpscripts/trackShipment.php';
                        $PackageID = $_GET['inputPackageID'];

                        $sql = "select * from package where p_id='$PackageID'";

?>






            <table class="table table-striped">
                <tr>
                    <th><span>PID</span></th>
                    <th><span>Customer ID</span></th>
                    <th>Name</th>
                    <th>Description</th>
                    <th>Destination Per KM</th>
                    <th>Type</th>
                    <th>Price/KG</th>
                </tr>
                </th>
                <?php 

                     foreach ($db->query($sql) as $count)?>

                   <tr>
                        <td>
                            <?php echo $count['p_ID'];  ?>
                        </td>
                        <td>
                            <?php echo $count['cus_ID']; ?>
                        </td>
                        <td>
                            <?php echo $count['package_name']; ?>
                        </td>
                        <td>
                            <?php echo $count['package_description']; ?>
                        </td>
                        <td>
                            <?php echo $count['package_type']; ?>
                        </td>
                        <td>
                            <?php echo $count['destination_per_km']; ?>
                        </td>
                        <td>
                            <?php echo $count['price_per_kg']; ?>
                        </td>
                <?php } ?>
            </table>


    </div>
</div>


想追踪你的包裹吗
输入您的包ID(PID)

好的,这是你的包裹!

它向您展示了它没有定义,因为您的表单使用post方法,而您使用的是GET数组

$PackageID = $_GET['inputPackageID'];
换成

$PackageID = $_POST['inputPackageID'];
另外,使用
isset()

因为您在同一页面中使用的是您的实体代码

或者
!空()

如果您在同一文件中使用相同的代码,您可以使用
action=“
和一个额外的条件语句作为提交按钮

if(isset($\u POST['submit']){…}

看到你的评论,情况就不是这样了,你正在使用一个单独的文件,所以我们可以把它划掉

但是,如果GET方法是您真正想要使用的方法,则需要在表单中将方法更改为
method=“GET”
。使用这种方法是不安全的,请参考我的脚注


脚注:

您当前的代码对用户开放。使用,或者,它们更安全


“如何从HTML页面中的表单进行搜索并在同一HTML页面中显示结果?”

  • 为此,您可以使用Ajax,也可以使用
    action=”“

您发布代码的页面名为“trackshipping.php”吗?如果是这样,那么它应该屈服于自己。但是,标题问题与正文中的问题不匹配。在标题中,您询问“如何搜索数据库中的特定行”,但在正文中,您询问如何使搜索表单在同一页面上显示结果。这是两个不同的问题。你能澄清一下吗?你很容易受到攻击。而且变量无法识别,因为您第一次访问此表单的页面时,url中没有
?inputPackageID=xxx
。@Beems对此表示抱歉。我在这里度过了漫长的一天,而且已经很晚了。我正试图解决问题的实质。而trackshipping.php是另一个php文件,不是我目前正在处理的页面。
如果希望在同一页面或Ajax上获得结果,请使用
action=“”
,如我下面的回答所述。如果这不能解决问题,并且我在回答中解释了它是未定义的,那么我将简单地删除它@WillieMwewa@WillieMwewa如果您希望通知社区已找到解决方案,请将其标记为已解决。否则,它将保留在未答复类别中。下面是如何返回到答案并按照该页上的概述标记复选标记。
if(isset($_POST['inputPackageID'])){
    $PackageID = $_POST['inputPackageID'];
}
if(!empty($_POST['inputPackageID'])){
    $PackageID = $_POST['inputPackageID'];
}