2013-03-04 196 views
0

我有一個數據庫中有成千上萬的郵政編碼,它有第二列顯示一個級別(紅色,藍色和黃色之間)。 我已經成功添加了數據庫並且可以與其進行協調,但返回的信息僅顯示數據庫的第一行。從Mysql數據庫獲取信息

我的形式是非常基本的: -

<body> 
<form method="post" action="database.php"> 
    Postcode 
    : 
    <input name="postcode" type="text" id="postcode" size="30"><?php echo $postcode ?> 
    <br> 
<br> 
<br> 
<input type="Submit" value="Submit"> 
</form> 

</body> 

我的PHP代碼到目前爲止是: -

<?php 
$con = mysql_connect("localhost","###","###"); 
if (!$con) { 
die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("###", $con); 



$result = mysql_query("SELECT * FROM `TABLE 1` LIMIT 0, 33546 ") 
or die(mysql_error()); 



$row = mysql_fetch_array($result); 
// Print out the contents of the entry 

echo "Postcode: ".$row['postcode']; 
echo "Level: ".$row['level']; 
echo "Floodlevel: ".$row['floodlevel']; 


if (!mysql_query($sql,$con)) { 
die('Error: ' . mysql_error()); 
} 
?> 

我期待進入後的代碼,如果該職位代碼是對數據庫,然後與郵政編碼一起顯示的級別。如果郵政編碼在數據庫中爲「否」,以回顯郵件說明未列出郵政編碼。

任何幫助,將不勝感激!

+0

如果您只是潛入PHP/Mysql世界,使用'mysqli_'或'PDO'函數從數據庫中獲取數據。避免使用'mysql_'函數,因爲它們已經過時。至於你的問題的解決方案 - @赫斯曼是正確的:) – 2013-03-04 17:09:22

+0

也刪除限制,它不應該硬編碼,因爲你的數據庫可能會改變大小。另外,在一個頁面上向用戶顯示33546行是否是一個好主意? – Husman 2013-03-04 17:12:04

回答

1

您正在返回一行,您需要遍歷結果並將它們全部顯示出來。

while($row = mysql_fetch_array($result)){ 
    echo "Postcode: ".$row['postcode']; 
    echo "Level: ".$row['level']; 
    echo "Floodlevel: ".$row['floodlevel']; 
} 

此外,mysql *函數已被棄用。使用庫MySQLi或PDO爲the PHP docs


描述如果要在用戶的郵政編碼存在顯示一條消息:

$postcode = "E9 7TR"; 
$result = mysql_query("SELECT * FROM `TABLE 1` WHERE postcode='$postcode' ") 
or die(mysql_error()); 

$row = mysql_fetch_array($result); 
if(mysql_num_rows($row) >= 1) // display success message 
else // display not found 

再次,這是使用舊風格的MySQL *查詢其不再推薦這樣做,使用PDO風格的語句更好。

+0

我不想看到所有的郵政編碼。用戶應輸入他們的郵政編碼並提交郵政編碼,以檢查他們的郵政編碼是否在數據庫中列出。如果郵政編碼沒有列出,它應該返回一條消息,說明沒有列出。如果列出,則應顯示級別。 – user2132637 2013-03-04 22:29:35

+0

在這種情況下,您的MySQL語句需要重寫。查看我更新的代碼。 – Husman 2013-03-04 22:43:30

+0

嗨Husman感謝您的幫助到目前爲止......我已將代碼更改爲以下$ postcode =「E9 7TR」; $ result = mysql_query(「SELECT count(*)AS results from'TABLE 1' WHERE postcode = $'$ postcode'」)or die(mysql_error()); $ row = mysql_fetch_array($ result); if($ row ['results']> = 1){echo「Postcode:」。$ row ['postcode']; echo「Level:」。$ row ['level']; echo「Floodlevel:」。$ row ['floodlevel']; } //顯示成功消息else {echo「輸入的郵編未在數據庫中列出」; }//但獲得以下錯誤?你的SQL語法錯誤; //在第1行'E9 7TR'附近使用的語法 – user2132637 2013-03-05 09:35:20