2013-03-04 151 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