2013-01-24 46 views
0

我仍然是PHP noob,所以如果這很簡單,我很抱歉。如果列被放入變量中,mssql_fetch_array只顯示一行

我正在爲使用PHP和mySQL的網站創建一個相當基本的搜索工具。我已連接到數據庫,選擇了數據庫,查詢了表並獲取了表列;

$k = htmlspecialchars($_GET['k']); // Get search query 

$select = mssql_query("SELECT * FROM search WHERE Title Like '%" . $k . "%'"); 

if(mssql_num_rows($select) < 1) { 

$noResults = 'No results found for <b>' . $k . '</b>, <label for="k">Please try again.</label>'; 

} else { 

while ($results = mssql_fetch_array($select)) { 

    $title = $results['Title']; 
    $link = $results['Link']; 
    $description = $results['Description']; 

} 

} 

當我把$ results ['']列放到變量中,然後嘗試像這樣回顯每個變量;

   if(isset($noResults)) { 

       echo $noResults; 

      } else { 

       echo '<li>' . '<h2>' . '<a href="' . $link . '" title="' . $title . '">' . $title . '</a>' . '</h2>' . '<p>' . $link . '</p>' . '<p>' . $description . '</p>' . '</li>'; 

      } 

它只回顯出匹配該查詢的一行,但是,如果我只是簡單地回顯列像這樣;

echo $results['Title']; 
    echo $results['Link']; 
    echo $results['Description']; 

查詢相匹配的所有行會顯示..

我不知道爲什麼會這樣。如果有人能幫助我,這將是偉大的!

回答

2

你需要使用一個循環:

$k = mysql_real_escape_string($_GET['k']); // Get search query 

$select = mssql_query("SELECT * FROM search WHERE Title Like '%" . $k . "%'"); 

if(mssql_num_rows($select) < 1) { 

    $noResults = 'No results found for <b>' . $k . '</b>, <label for="k">Please try again.</label>'; 

} else { 
    $results= array(); 
    while ($result = mssql_fetch_array($select)) { 
     $results[]= $result; 
    } 

} 

if(isset($noResults)) { 

    echo $noResults; 

} else { 
    echo "<ul>"; 
    foreach($results as $result){ 
     echo '<li>' . '<h2>' . '<a href="' . $result['link'] . '" title="' . $result['title'] . '">' . $result['title'] . '</a>' . '</h2>' . '<p>' . $result['link'] . '</p>' . '<p>' . $result['description'] . '</p>' . '</li>'; 
    } 
    echo "</ul>"; 
} 
+0

它的工作,感謝您的幫助! – user1571757

2

你執行輸出 while循環嗎?

如果您執行while循環並在此之後調用echo,則每個結果集都將覆蓋前一個結果集,並且echo將輸出獲取的最後一個結果集。

如果您在Loop中調用回顯,則每個結果集都會生成「他自己的」輸出行。

如果要將每個結果集保存在變量中,可以使用在循環前面聲明並在循環中填充的數組。

1

幾件事情是不是從你的問題不清楚,但我假設你是echo'ing外循環的變量,因爲你正在檢查isset($noResults)。這意味着您要在每個while循環中用新值重新分配變量。所以最終你得到最後一個分配給變量。您必須使用數組來保存值或在循環中回顯它。

相關問題