2011-02-25 2 views
1

私は、「location」と呼ばれるMySQLデータベースにフィールドを持っています。これはNorth、South、East、Westだけを扱っています。mysql_fetch_arrayクエリーからフォームを作成する

$query_form = "SELECT DISTINCT location FROM hotel ORDER BY location ASC"; 
$result_form = mysqli_query($dbc, $query_form) or die('die query error'); 
$row_form = mysql_fetch_array($result_form, MYSQLI_NUM); 

私は、このようなことの表に移入するために、このクエリから4つの結果を使用していた:

<option value='1'>North</option> 
<option value='2'>South</option> 
<option value='3'>East</option> 
<option value='4'>West</option> 

を私が異なっているだけで4件の結果を得るために、このコードを使用している

私はこれを使用しました:

foreach ($row_form['location'] as $k => $v) { 
    echo '<option value="' . $k . '">' . $v . '</option>\n'; 
    } 

しかし私は私のアプローチがうまくいかないことを恐れています - 後悔して、私はnoobと何が間違っていることを解決することができません!

おかげ

+0

使用 'mysql_fetch_assoc();'や 'は、mysql_fetch_array($のresult_form、MYSQL_ASSOC)に変更;' – kjy112

答えて

2

mysql_fetch_arrayのみ(マニュアルを引用し、強調鉱山)ます

連想配列、数値配列、または 両方

結果の行を フェッチ

だから、この関数を何度も呼び出す必要があります。同盟国、行ごとに1回(だから、ここでは4回)


これは通常、ループで実行され、結果が得られるまでループします。

$lineCounter = 1; 
while ($row = mysql_fetch_array($result_form, MYSQL_ASSOC)) { 
    // Use your row, here. 
    // For instance : $row['location'] 
    // And you can use the $lineCounter variable, to keep track of the current line number. 
    $lineCounter++; 
} 

注:私は行ごとに連想配列を取得するには、MYSQL_ASSOCを使用

  • :私が思うあなたの場合
    、あなたはおそらくこのようなものを使用したいと思いますこの方法で作業する方が簡単です。
  • whileループの本体では、列名でインデックス付けされた$row連想配列を使用できます。追記として


一部のHTMLコードで(文字列など)のデータを注入する際、あなたはHTMLの注射を避けるために、適切に出力をエスケープする必要があります。

解決策については、htmlspecialcharsの機能を参照してください。

0

実際には、MYSQLI_NUMは数値インデックスのフィールドを返します。あなたの要求に応じて、私は本当に助けてくれないと信じています。<option value="x">..

[MYSQLI_NUMが実際に何をしているかについてのこのリンクをチェックしてください。

今、あなたのコードでは、あなたは次のように変更する必要があります。

$i=1; 
while ($row_form=mysql_fetch_array($result_form, MYSQLI_NUM)) { 
    echo '<option value="' . $i . '">' . $row_form['location'] . '</option>\n'; 
    $i++; 
} 

EDIT:ここでは別の答えで指摘したように、あなたが本当にループがから各行を取得するために構築持っている必要がありますデータベース。 1つの単一のmysql_fetch_array(..)はあなたに1つの行しか与えません。関数が有効な行を返すまで、ループを反復する必要があります。関数がどのように動作するか

チェック:http://php.net/manual/en/function.mysql-fetch-array.php

関連する問題