2013-03-04 6 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_' 함수는 쓸모 없으므로 사용하지 마십시오. 귀하의 문제에 대한 해결책은 @Husman이 맞습니다 :) –

+0

LIMIT도 삭제해야합니다. 데이터베이스 크기가 변경 될 수 있으므로 LICIT를 하드 코드해서는 안됩니다. 또한 한 페이지에 33546 행을 사용자에게 표시하는 것이 좋습니다. – Husman

답변

1

한 행을 반환하면 결과를 반복하여 모두 표시해야합니다.

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

또한 mysql * 함수는 더 이상 사용되지 않습니다. 이것은 더 이상 권장 오래된 스타일의 mysql을 * 쿼리를 사용하고,

$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 

을 다시 : the PHP docs


에 설명 된대로 사용자의 우편 번호가있는 경우 메시지를 표시하려면 mysqli 또는 PDO를 사용하여 PDO 스타일 문을 사용하는 것이 더 좋습니다.

+0

나는 모든 우편 번호를 표시하려고하지 않는다. 사용자는 우편 번호를 입력하고 우편 번호를 제출하여 우편 번호가 데이터베이스에 나열되어 있는지 확인해야합니다. 우편 번호가 목록에 없으면 나열되지 않은 메시지가 반환됩니다. 목록에 있으면 레벨이 표시됩니다. – user2132637

+0

MySQL 구문을 다시 작성해야하는 경우. 내 업데이트 된 코드를 참조하십시오. – Husman

+0

Husman님께 도움을 주신 것에 감사드립니다 ... 코드를 다음 $ postcode = "E9 7TR"로 변경했습니다. $ result = mysql_query ("SELECT count (*) AS 결과는'postcode = $ '$ postcode'"에서 유래) 또는 die (mysql_error()); $ row = mysql_fetch_array ($ result); if ($ row [ 'results']> = 1) {echo "우편 번호 :". $ row [ '우편 번호']; echo "Level :". $ row [ 'level']; echo "Floodlevel :". $ row [ 'floodlevel']; } // 성공 메시지를 표시합니다. else {echo "입력 한 우편 번호가 데이터베이스에 나열되지 않았습니다."; } //하지만 다음 오류가 발생합니까? SQL 구문에서 오류가 발생했습니다. // "E9 7TR"근처에서 사용하는 구문 1 행 – user2132637

관련 문제