2012-02-29 155 views
0

我使用php製作一個目錄,目前所有的流派都出現在頁面的頂部,但是當我點擊它們時,它們不會返回任何結果,而且我也不能找出原因。SQL查詢沒有結果

這是我當前的代碼:

<?php 
session_start(); 
include "connect.php"; 
include "header.php"; 

if (isset($_GET['ID'])) { 
    $cat_id = $_GET['Genre']; 
    $q = "SELECT ID, Name, Genre FROM Products WHERE Genre=" 
      .mysqli_real_escape_string($_SESSION['conn'],$cat_id).";"; 

    $result = mysqli_query($_SESSION['conn'],$q); 


    echo "<div>"; 
    while ($row = mysqli_fetch_row($result)){ 
     echo "<p><a href='product.php?id=$row[ID]'>$row[Name]</a></p>"; 
    } 
    echo "</div>"; 
    mysqli_free_result($result); 
} 

include "footer.php"; 
?> 

這是我第一次使用PHP,所以我的大概真的赤裸裸的問題對不起!

+0

嘗試呼應您查詢,並在phpMyAdmin或任何其他數據庫運行瀏覽器,就像HeidiSQL一樣。看看你是否得到了一些結果 – Ovidiu 2012-02-29 11:44:34

+0

是否有理由在查詢中使用'escape''$ cat_id'?你必須檢查cat_id是否爲數字('$ cat-id = intval($ _ GET ['Id'])')。並在你的'echo'行中檢查語法[ID]'不帶引號:'echo「

$row['Name']

'; – teran 2012-02-29 11:51:54

+0

'$ cat_id'不是數字..它等於流派,我可以改變它來做什麼接受一個單詞而不是一個數字? – 2012-02-29 12:02:19

回答

1

試試這個,你用過「;」這是不需要和流派是字符串

$q = "SELECT ID, Name, Genre FROM Products WHERE Genre='" 
      .mysqli_real_escape_string($_SESSION['conn'],$cat_id)."'"; 
+0

仍然沒有工作..不管我改變它什麼都沒有。 – 2012-02-29 11:47:58

+0

好吧,嘗試回聲您的查詢運行它到phpmyadmin,看看是什麼 – pkachhia 2012-02-29 11:50:50

+0

把它放到phpmyadmin中,它工作,只是返回了一個空的結果 – 2012-02-29 11:53:08

1

你應該檢查你的查詢是否與某種mysqli錯誤檢查失敗。

if (! $result = mysqli_query($_SESSION['conn'],$q)) 
{ 
    printf("Error: %s\n", $mysqli->error); 

} 

,除非你永遠不知道爲什麼結果不顯示

+0

試過,它沒有失敗!只是仍然空虛。 – 2012-02-29 11:50:49

0

重寫while循環與這一個: -

while ($row = mysqli_fetch_row($result)){ 
    echo "<p><a href='product.php?id=".$row['ID']."'>".$row['Name']."</a></p>"; 
+0

仍然不起作用..我在想它的東西真的很愚蠢,就像我打電話給錯誤的領域或什麼的.. – 2012-02-29 11:49:59