PHP POST请求-无法获得第一行MYSQL

时间:2018-12-03 08:02:38

标签: php mysql post

我当前正在创建一个图片库网站,无论如何,我在系统上发布的第一张图片始终不可用。我在图片上有这个“显示信息”按钮,该按钮会发出一个调用请求,调用showinfo.php。

这是display.php,它显示数据库中所有可用的图像。

if ($method == "0") {
    $stmt = $conn->prepare("SELECT * FROM image");
    $stmt->execute();
    $result = $stmt->get_result();
    echo "
    <div class='container'>
        <div class='row text-center' style='display:flex; flex-wrap: wrap;'>";
        while ($row2 = $result->fetch_assoc()) {
        echo "<div class='col-md-3 col-sm-4'>
                    <div class='thumbnail'>
                        <img src='".$target_dir.$row2['filename']."'>
                        <div class='caption'>
                            <h4>".$row2['name']."</h4>
                        </div>  
                        <p>
                            <form action='showinfo.php' method='POST' enctype='multipart/form-data'>
                                <input type='hidden' name='image_id' value='".$row2['id']."'>
                                <button name='showinfo' class='btn btn-primary'>More Info</button>
                            </form>
                        </p>
                    </div>
                </div>";
            }
    echo "</div> </div>";
}

这是网页上的外观,请注意,仍将获取mysql中表的第一张图片/第一行:

display.php preview on html

然后,当点击“更多信息”按钮时,它将重定向到showinfo.php,显示如下内容:

showinfo.php preview on html

但是,它永远无法用于第一个图像。我已经进行了一些测试,它从未进入showinfo.php页面,并且在单击按钮后它将始终重定向回主页。我已经使用邮递员发出了投递请求,将image_id设置为1,这使我获得了第一张图像的信息页面,只是没有单击按钮时。我正在使用XAMPP 5.6.37

这是我应该为第一张图片获得的预期结果 This is the expected result I should get for the first image

忽略被卡住的东西..但是发布请求通过。

This is the showinfo.php code

2 个答案:

答案 0 :(得分:0)

为什么使用表单在下一页上显示该产品的数据,如果用户复制链接并将其共享到其他地方,它将不会有发布数据,结果将是没有数据的错误页面。到目前为止,使用它的更好方法。

if ($method == "0") {
$stmt = $conn->prepare("SELECT * FROM image");
$stmt->execute();
$result = $stmt->get_result();
echo "
<div class='container'>
    <div class='row text-center' style='display:flex; flex-wrap: wrap;'>";
    while ($row2 = $result->fetch_assoc()) {
    echo "<div class='col-md-3 col-sm-4'>
                <div class='thumbnail'>
                    <img src='".$target_dir.$row2['filename']."'>
                    <div class='caption'>
                        <h4>".$row2['name']."</h4>
                    </div>  
                    <p>
                            <a href='showinfo.php?image_id=".$row2['id']."'> <button name='showinfo' class='btn btn-primary'>More Info</button></a>
                    </p>
                </div>
            </div>";
        }
echo "</div> </div>";
}

在showinfo.php页面上,您可以使用$ _GET ['image_id']根据图像ID从mysql获取数据,并且可以在全球范围内通过链接使用。

答案 1 :(得分:0)

感谢所有建议。有人提到我应该尝试使用我们的重定向代码来查看为什么发生此问题。我这样做了,就可以毫无问题地获得第一张图片的信息。因此,我查看了主页上的代码...事实证明,这些都不是我们讨论的问题。在我的主页上,我以表格的形式包装了“方法”选择代码,这就是导致该问题的原因。我的代码最初看起来像这样,showImages(this.value)是一个js函数,它将调用上面显示的display.php。

显示所有缩略图的位置是ID为“ showimage”的div。 一旦取出,就可以解决我的问题。

  <form>
        <div class='form-inline'>
            <input class='form-control' type='text' id='menu_search_input' size='50' placeholder="enter content first if searching by name..">
                <select class='form-control' id='menu_search' onchange='showImages(this.value)'>
                    <option value=''>Search by</option>
                    <option value='0'>Search by Latest</option>
                    <option value='1'>Search by Image Name</option>
                    <option value='2'>Search by Category</option>
                    <option value='3'>Search by Most Popular</option>
                    <option value='4'>Search by Least Popular</option>
                    <option value='5'>Search by Most Credit Needs</option>
                    <option value='6'>Search by Least Credit Needs</option>
                </select>
            <div id="showimage">Loading images ...</div>
        </div>
 </form>