1

私は自分自身にPHPとMySQLを教えており、データベースからいくつかの情報を取得してテーブルに入れようとしています。

これまでのところ、テーブルの列ヘッダーのみが表示されており、各列の情報は表示されていません。PHPファイルの表示にも時間がかかります。

私のコードの問題点を指摘してください。

<?php
mysql_connect("localhost",$username,$password);
mysql_select_db($dbname) or die("Unable to select Database");
$query = "SELECT * FROM table_1";
$result = mysql_query($query);
$numcount = mysql_num_rows($result);
echo "<h2>$numcount rows in table_1.</h2>";
mysql_close();
?>

<table border="0" cellspacing="4" cellpadding="2">
<tr>
<th><font face="Futura">Type |</font></th>
<th><font face="Futura">Name |</font></th>
<th><font face="Futura">Street |</font></th>
<th><font face="Futura">Address1 |</font></th>
<th><font face="Futura">Address2 |</font></th>
<th><font face="Futura">Town |</font></th>
<th><font face="Futura">County |</font></th>
<th><font face="Futura">Postcode |</font></th>
<th><font face="Futura">Number |</font></th>
<th><font face="Futura">Latitude,Longitude</font></th>
</tr>

<?php
$i=0;
while ($i < 843) {
$type = mysql_result($result,$i,"type");
$name = mysql_result($result,$i,"name");
$street = mysql_result($result,$i,"street");
$addr1 = mysql_result($result,$im,"address1");
$addr2 = mysql_result($result,$im,"address2");
$town = mysql_result($result,$im,"town");
$county = mysql_result($result,$im,"county");
$postcode = mysql_result($result,$im,"postcode");
$number = mysql_result($result,$im,"number");
$latlong = mysql_result($result,$im,"latlong");
}
?>

<tr>
<td><font face="Futura"><?php echo $type;?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $name;?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $street;?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $addr1;?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $addr2;?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $town;?></font></td>
</tr>
<?php
$i++;
?>
<?
echo "</table>"; 
?>
</body>
</html>
4

2 に答える 2

2
  1. mysql_result()は、?の前にmysql_close()を実行すると機能します。

  2. ここでmysql_fetch_row()を使用してみませんか?

@XcodeDevの詳細情報で編集:

単一の結果が必要な場合は、mysql_result()を使用できます。例:

$query = mysql_query("SELECT COUNT(id) FROM users");

それで

$count = mysql_result($query, 0);

複数のデータを含む1行の結果が必要な場合は、

$result = mysql_fetch_row($query); => $result[0], $result[1], $result[2] etc

または

$result = mysql_fetch_assoc($query); => $result['type'], $result['name'] etc

複数のデータを含む複数行の結果が予想される場合は、

while ($result = mysql_fetch_row($query)) {
    => $result[0], $result[1], $result[2] etc
}

または

while ($result = mysql_fetch_assoc($query)) {
    => $result['type'], $result['name'] etc
}
于 2011-03-13T23:04:50.743 に答える
0

手始めに、$ iがループ内でインクリメントされていないため、無限ループが発生しています。$ iをインクリメントすると、問題が修正されるはずです。$ imとは何ですか?

コードは次のようになります。

<?php
$i=0;
while ($i < 843) {
    $type = mysql_result($result,$i,"type");
    $name = mysql_result($result,$i,"name");
    $street = mysql_result($result,$i,"street");
    $addr1 = mysql_result($result,$i,"address1");
    $addr2 = mysql_result($result,$i,"address2");
    $town = mysql_result($result,$i,"town");
    $county = mysql_result($result,$i,"county");
    $postcode = mysql_result($result,$i,"postcode");
    $number = mysql_result($result,$i,"number");
    $latlong = mysql_result($result,$i,"latlong");

?>

<tr>
<td><font face="Futura"><?php echo $type;?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $name;?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $street;?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $addr1;?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $addr2;?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $town;?></font></td>
</tr>
<?php
    $i++;
} // this is where the loop is ending.
?>
<?
mysql_close(); // close mysql connection after reading data
echo "</table>"; 
?>
于 2011-03-13T22:59:58.510 に答える