2016-05-15 63 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循環。 –