【问题标题】:PHP query won't work from HTML href linkPHP 查询不能从 HTML href 链接工作
【发布时间】:2016-06-03 15:35:14
【问题描述】:

我正在创建一个网页,让我可以按县搜索位置。我正在尝试在我的基本主页上创建一个 href 链接,该链接将调用一个 Php 函数,然后显示我的 Sql 数据库中的结果。 不知道为什么,但是当我单击 href 链接时,主页只是空白,没有返回值。已经检查过代码和数据库,已经向几个朋友展示过,但不知道出了什么问题。任何帮助表示赞赏!

这是我的 index.php 主页代码(href 大约在一半以下)

<!DOCTYPE HTML>

<?php
include("includes/db.php");
include("getAntrim.php");
include("functions/functions.php");
?>


<html>

<head>

<link rel = "stylesheet" href="styles/styles.css" media = "all"/>

<title>Location Scout</title>

</head>

<body>

<!-- Main container starts -->

<div class ="main_wrapper">

<div id="form">
<form method="get" action="results.php" enctype="multipart/form-data">

<input type="text" name="user_query" placeholder="Search for location"?>
<input type="submit" name="search" value="search"/>

</form>
</div>

<div class ="content_wrapper">
<div id ="left_sidebar">
<div id="sidebar_title">Search by County</div>

<a href="getAntrim.php">Antrim</a><br></br>


<div id ="content_area">
<div id ="products_box">

<!-- THIS IS WHERE FETCHED DATABASE INFO WILL GO -->


<?php
getAntrim();

?>


</div>
</div>
</div>

<!-- Main container ENDS -->

</div>

</div>

</body>

</html>

这是我的 getAntrim.php 函数,它应该对 sql 数据库进行排序,然后返回声明的值。

<?php

    include ("includes/db.php");

    if (isset ($_GET['getAntrim'])) {

        $get_loc_co = "select * from locations where county='Antrim'";
        $run_loc_co = mysqli_query($db, $get_loc_co); //Gets data from db and presents on main  page

        $count = mysqli_num_rows($run_loc_co);

        if ($count==0) {

            echo "<h2>No locations found in this category.";

        }//if

        while ($row_loc_co=mysqli_fetch_array($run_loc_co)) {

                //variable to store values
                $loc_id = $row_locations['loc_id'];
                $loc_name = $row_locations['loc_name'];
                $town = $row_locations['town'];
                $county = $row_locations['county'];
                $productions = $row_locations['productions'];
                $disabled = $row_locations['dis_access'];
                $parking = $row_locations['parking'];
                $visitor = $row_locations['vis_facs'];
                $transport = $row_locations['public_trans'];
                $cost = $row_locations['cost'];
                $accom = $row_locations['accom'];
                $latitude = $row_locations['latitude'];
                $longitude = $row_locations['longitude'];
                $description = $row_locations['loc_desc'];
                $keyword = $row_locations['loc_keyword'];
                $loc_image = $row_locations['loc_img'];


                echo "
                <div id= 'single_location'>
                <h3>$loc_name</h3>
                <img src = 'Admin_area/location_images/$loc_image' width='180' height = '180'/><br>
                <p><b>Productions: $productions </b></p>
                <p><b>Description: $description </b></p>

                </div>
                ";

        }//while
    }//if


?>

我是第一次发帖,所以希望已经发布了这个好的!任何建议表示赞赏。

【问题讨论】:

  • 您的代码不起作用,并且该错误很可能在某处的错误日志中找到(取决于 Web 服务器)。
  • 您在此处覆盖$run_loc_co 变量while ($row_loc_co=mysqli_fetch_array($run_loc_co)) { 将其更改为while ($row_locations=mysqli_fetch_array($run_loc_co)) {
  • 谢谢 cmorrissey。已经尝试过这个和下面的其他建议,现在提出了其他错误消息。在下面的新答案中粘贴了屏幕截图。

标签: php html sql


【解决方案1】:

您正在检查您没有传入的查询参数:

<a href="getAntrim.php">Antrim</a><br></br>

    if (isset ($_GET['getAntrim'])) {
                      ^^^^^^^^^

$_GET 包含 url 查询参数,例如example.com?foo=bar(foo=bar 部分)。由于您的href 中没有查询参数,isset() 正确返回 false,并且您的整个 db 代码部分将被忽略。

你可能想要

<a href="getAntrim.php?getAntrim">Antrim</a><br></br>
                      ^^^^^^^^^^

按原样进行。

【讨论】:

  • 感谢您回复我。已经尝试过了,现在收到一些错误消息。可以看的话已经贴上截图了。
  • 您的查询失败,您没有错误处理,并且使用了查询调用返回的布尔值 false,就好像它是结果集一样,从而导致更多错误。
  • 好的,我不确定你的意思,但会再看一遍。再次感谢。
  • null give: 你没有正确连接到数据库,或者$db 不是你的数据库连接句柄。这意味着您的 query() 失败,并返回一个失败语句。因为这不是结果。所以 num_rows 也失败了。
  • 基本上:您编写代码时就好像什么都不会出错,这正是错误的态度。在处理外部资源(尤其是数据库)时,永远不要假设成功。即使您编写的 SQL 语法 100% 完全有效,也有几乎无限的其他方式导致它失败(例如,坏外键、数据库崩溃、网络死机、等等等等)。始终假设失败,检查失败,并将成功视为惊喜。
猜你喜欢
  • 1970-01-01
  • 2013-10-23
  • 2017-04-10
  • 1970-01-01
  • 2013-11-30
  • 2018-02-17
  • 2023-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多