2016-05-15 66 views
1
我有未通过PHP
下面显示MySQL数据的一个问题是

哪个数据应被输出到代码:PHP/MySQL数据未显示在表

THIS IS individual_item_page.php

<?php 
    if (isset($_GET['suburb'])) 
    { 
     $_SESSION["dog_park"] = $_GET['suburb']; 
    } 
    elseif (isset($_GET['keyword'])) 
    { 
     $_SESSION["dog_park"] = $_GET['keyword']; 
    } 
    else 
    { 
     $_SESSION["dog_park"] = $_GET['rating'] ; 
    } 
    ?> 
    <h1><?php echo $_SESSION["dog_park"]; ?></h1> 
    <table border="1" cellspacing="5" cellpadding="5" width="100%"> 
     <thead> 
      <tr> 
       <th>Park Name</th> 
       <th>Street</th> 
       <th>Suburb</th> 
       <th>Dog Park Area (m2)</th> 
      </tr> 
     </thead> 
     <tbody> 
     <?php 

      $result = $conn->prepare("SELECT * FROM dog_parks.items where suburb = ?"); 
      $result->execute(array($_SESSION['dog_park'])); 
      for($i=0; $row = $result->fetch(); $i++){ 
     ?> 
      <tr> 
       <td><label><?php echo $row['Park_Name']; ?></label></td> 
       <td><label><?php echo $row['Street']; ?></label></td> 
       <td><label><?php echo $row['Suburb']; ?></label></td> 
       <td><label><?php echo $row['Dog_Park_Area_(m2)']; ?></label></td> 

      </tr> 
      <?php } ?> 
     </tbody> 
    </table>  

下面是代码执行后的输出页面:
(无数据)  Visual Output

的页面是如何打算的工作基本概况是,
我必须通过
关键字3种搜索类型
郊区
评级

如果我要搜索郊区的狗公园我会从下拉框中选择一个郊区。 (代码在页面底部)

然后桌子会显示该郊区/区域内的狗公园,然后我将点击显示的其中一个公园(超链接), 这将带我到我正在访问的页面有,'individual_item_page.php'

下面的问题是郊区的搜索页面,然后有一个超链接到'individual_item_page.php',其中的问题是代码..

THIS IS SUBURB SEARCH PAGE

<table class="center"> <!-- Creating a table with the class of 'center' --> 

     <!-- DROP DOWN BOX --> 
     <?php 
     $SUBURB = $_POST['suburb']; 
       $stmt = $conn->prepare("SELECT dog_park_name from items where suburb='$SUBURB'"); 
       $stmt->execute(); 
      for($i=0; $row = $stmt->fetch();){ 
        $_SESSION["dog_park".$i] = $row[0];    
      ?> 
     <!-- DISPLAY RESULTS --> 
     <tr> <!-- Adding the first table row --> 
     <th>Dog Park</th> <!-- Adding the second table header --> 
     </tr> 
     <tr> <!-- Adding the second table row --> 
     <td><a href="individual_item_page.php?suburb='<?php echo $row[$i] ?>' " ><?php echo $row[$i] ?></a></td>   <!-- Add the second cell on the second row --> 
     </tr> 
       <?php } 
       ?> 

     </table> 

这个问题困扰了我很多小时了,任何帮助将不胜感激。

+0

你忘了在individual_item_page.php中用$ stmt-> bind_param()绑定参数吗? –

回答

0

individual_item_page.php,你必须要对几件事情:

  1. 您测试您可设置$_SESSION["dog_park"]前2个GET变量的存在,但你无法测试第三GET变量,$_GET['rating']。该网页上

  2. 你的SQL语句寻找一个郊区,假设,即$_SESSION["dog_park"]设置为郊区,尽管它可以设置为$_GET['keyword']$_GET['rating']的事实。另外,我不确定为什么你在$result->execute()声明中将$_SESSION['dog park']作为数组参数绑定。

  3. 在郊区搜索页面,您正在搜索表items,但在搜索页上您正在搜索dog_parks.items。这是故意的吗?

重要提示:在您的郊区搜索页面,你用事先准备好的声明,但手动添加的,而不是结合它用户输入的变量,这违背了绑定参数提供的保护,这是防止用户输入的数据直接添加到SQL语句中。

+0

[3] 是的,这是故意的,郊区搜索页面显示项目表中所有郊区(下拉框)中的所有狗公园名称,然后将转到'individual_item_page.php'。 我仍然通过问题排序以显示正确的数据(PHP新手) – deluxenathan

+0

您是否验证过您的SQL语句正在返回您想要的数据?您可以通过在MySQL Admin中手动运行语句来验证这一点。另外,循环查询结果的一个简单方法是:while($ row = $ result-> fetch())'而不是使用for循环。 –