2015-05-30 97 views
0

我需要一些關於如何在HTML表格中打印SQL搜索結果的幫助(是的,我知道這不是最好的選擇,我會在後面改進)與鏈接。如何在HTML表格中打印SQL結果?

這是我的代碼現在的樣子:

$databaseconnection=mysql_CONNECT("here is my usernames etc") 
or die("Can't get access to the database"); 

mysql_select_db("username") 
or die ("can't find the database"); 
$sentence="SELECT `name`, `country`, `sex`, `color`, `pattern`, `coat`, `breeder` FROM `database` WHERE `name` = '$name' or `country` = '$country' or `sex` = '$sex' or `color` = '$color' or `pattern` = '$pattern' or `coat` = '$coat' or `breeder` = '$breeder'"; 

$result=mysql_query($sentence,$databaseconnection) or die ("Couldn't save tha information").mysql_error(); 

echo "<table>"; 

while($row = mysql_fetch_array($result)){ 
echo "<tr><td><a href=" . $row['name']> print $row['name'] . "</a>". "</td><td>" . $row['country'] . "</td></tr>". "</td><td>" . $row['sex']. "</td><td>" . $row['color']. "</td><td>". "</td><td>" . $row['pattern'] . $row['coat']. "</td><td>" . $row['breeders']; 
} 

echo "</td></table>"; 

mysql_close(); 

什麼我在這兒做錯了什麼? 鏈接不起作用,它會打印我在數據庫中的每個動物。例如: 我搜索了名爲「狗」的動物。 它打印「狗」的所有正確的信息,但也來自「貓」和「鼠標」的信息。

+0

你的第一個問題是....你的** STILL **使用mysql。你應該**停止**使用它,並且_any_教程下面顯示它,應該被忽略。一年多以前的任何教程都可能已過時。 mysql函數已經被殺掉了一段時間,但是我們仍然在SO上得到了100個問題,包括它.. –

+1

語法更正:你是*^ – Ben

+0

什麼是在'echo'中間的'print'?否則,OR條件與您列出的任何條件相匹配。如果任何一個條件都是空的,並且您的數據庫中的任何內容都有匹配的空字段,那麼您將獲得大量的條件。使用AND代替或更好,也只包含指定的條件。 –

回答

0
while($row = mysql_fetch_array($result)){ echo "<tr><td><a href=" . $row['name']> print $row['name'] . "</a>". "</td><td>" . $row['country'] . "</td></tr>". "</td><td>" . $row['sex']. "</td><td>" . $row['color']. "</td><td>". "</td><td>" . $row['pattern'] . $row['coat']. "</td><td>" . $row['breeders']; 

}

你有近$行[ '名稱']語法問題

0

嘗試改變orand

此外,sql查詢不安全,它可以很容易地被黑客入侵。

變化線

echo "<tr><td><a href=" . $row['name']> print $row['name'] . "</a>". "</td><td>" . $row['country'] . "</td></tr>". "</td><td>" . $row['sex']. "</td><td>" . $row['color']. "</td><td>". "</td><td>" . $row['pattern'] . $row['coat']. "</td><td>" . $row['breeders'];

echo "<tr><td><a href='{$row['name']}'>{$row['name']}</a></td><td>{$row['country']}</td><td>{$row['sex']}</td><td>{$row['color']}</td><td>{$row['pattern']}</td><td>{$row['coat']}</td><td>{$row['breeders']}";

和這條線

echo "</td></table>";

echo "</td></tr></table>";

-1

我將試圖回答這個問題,即使任何關於MySQL的功能讓我感到噁心。然而,用mysqli或PDO函數重新編寫腳本並不是我的工作,就像他們應該那樣。

$sentence="SELECT `name`, `country`, `sex`, `color`, `pattern`, `coat`, `breeder` FROM `database` WHERE `name` = '$name' or `country` = '$country' or `sex` = '$sex' or `color` = '$color' or `pattern` = '$pattern' or `coat` = '$coat' or `breeder` = '$breeder'"; 

你說你搜索了名爲「狗」的動物..但是你從來沒有告訴它在你的查詢中這樣做。

嘗試此查詢:

$sentence = "SELECT name, country, sex, color, pattern, coat, breeder FROM database WHERE animal = 'dog' AND name = '$name' OR country = '$country' OR sex = '$sex' OR color = '$color' OR pattern = '$pattern' OR coat = '$coat' OR breeder = '$breeder'"; 

您的鏈接被打破,因爲你的代碼被打破。試試這個:

echo '<table>'; 

while($row = mysql_fetch_array($result)){ 

    $name = $row['name']; 
    $country = $row['country']; 
    $sex = $row['sex']; 
    $color = $row['color']; 
    $pattern = $row['pattern']; 
    $coat = $row['coat']; 
    $breeders = $row['breeders']; 

    echo " 
     <tr> 
      <td><a href=\"$name\">$name</a></td> 
      <td>$country</td> 
      <td>$sex</td> 
      <td>$color</td> 
      <td>$pattern</td> 
      <td>$coat</td> 
      <td>$breeders</td> 
     </tr>"; 
} 

echo '</table>'; 

我佈置的作業給一個變量,因此我們可以將其放置在代碼更容易,並去除多餘的' . '怪異的間距。你的<tr><td>標籤也沒有匹配。我不得不認爲你只是學習,但你必須匹配所有的標籤。 A <td>必須有一個匹配的</td>,並且它們按照它們進入的順序排列,而不是像</tr>之類的其他標籤。您的表格間距現在可能會關閉,但您可以根據需要對其進行格式設置,因爲我不知道您想要使它看起來像什麼,並且破損的tr和td。

+0

在查詢中留下所有'OR's將返回比她想要的更多的數據。可能值得一提的是,我也同意 – RiggsFolly

+0

@RiggsFolly,但教他們PHP並不是我們的工作。這是書籍和課程的目的。由於我看不到'$ country','$ sex'和其他變量的變量,我不知道他們正在努力完成什麼。我至少縮小了她的查詢來拉狗。她指出了她的兩個問題:它不只是拉狗,而且鏈接被打破。我用我的答案解決了這兩個問題。 –

+0

我喜歡兩個downvote命中並運行。如果你打算投降,留下一個評論,表示你投下了你的投票。可能是因爲他們仍然認爲mysql是可以接受的,我冒犯了他們.. –