0

数千の郵便番号を含むデータベースがあり、レベル (赤、青、黄色の間) を示す 2 番目の列があります。データベースを正常に追加し、接続できますが、返される情報はデータベースの最初の行のみを示しています。

私のフォームはかなり基本的です:-

<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()); 
} 
?> 

郵便番号を入力しようとしていますが、郵便番号がデータベースにある場合は、郵便番号とともにレベルが表示されます。郵便番号がデータベースにない場合、郵便番号がリストされていないことを示すメッセージをエコーし​​ます。

どんな助けでも大歓迎です!

4

1 に答える 1

1

1つの行を返します。結果をループして、すべてを表示する必要があります。

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

また、mysql*関数は非推奨になりました。PHPのドキュメントで説明されているようにmysqliまたはPDOを使用します


ユーザーの郵便番号が存在する場合にメッセージを表示するには:

$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スタイルのステートメントを使用することをお勧めします。

于 2013-03-04T17:02:51.283 に答える