2011-10-25 11 views
2

を定義されているにもかかわらず:MySQLの:未定義のインデックス、彼らは私はいくつかの非常に単純なコードを持って

$result = mysql_query(" 
SELECT max(id) as id, ip, max(entry), COUNT(ip) AS count 
FROM table_name 
GROUP BY ip 
ORDER BY max(id) asc 
"); 

$i = 0; 

$num_rows = mysql_num_rows($result); 

echo $num_rows; 


while($row = mysql_fetch_row($result)) { 
    $id = $row['id']; 
    $entry = $row['entry']; 
    $ip = $row['ip']; 
    $count = $row['count']; 
    $i++; 
?> 



<tr width="100%" align="center"> 
    <td><?php echo $i; ?></td> 
    <td><?php echo $id; ?></td> 
    <td><?php echo $entry; ?></td> 
    <td><?php echo $ip; ?></td> 
    <td><?php echo $count; ?></td> 
    <td> 
    <form style="display:inline;" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
     <input type="hidden" value="<?php echo $ip; ?>" name="ip" /> 
     <input type="hidden" value="<?php echo $id; ?>" name="id" /> 
     <input type="submit" value="Ban IP" name="submit" /> 
    </form> 
    </td> 
</tr> 

<?php 
} 

問題は、私はそれを実行したとき、私は得ることです:

Notice: Undefined index: id 
Notice: Undefined index: entry 
Notice: Undefined index: ip 
Notice: Undefined index: count 

しかし、これまでの私が見ることができるように、私はSQLステートメントでインデックスを定義している、どんな助けも認められるだろう。それは、列名id、ip、entryを使ってデータを選択し、ipの数のためのインデックス "count"を作成します、なぜそれが定義されていないと言うのでしょうか?

+0

説明が疎そうだと申し訳ありませんが、それ以外の記述方法はわかりません – AviateX14

答えて

3

結果行を連想配列として取得するには、mysql_fetch_rowの代わりにmysql_fetch_assocを使用する必要があります。

また、と定義されていません。あなたの主張にもかかわらずentryと定義されています。これに

SELECT max(id) as id, ip, max(entry), COUNT(ip) AS count 

:これを変更

SELECT max(id) as id, ip, max(entry) AS entry, COUNT(ip) AS count 
+0

すぐに分けていただき、ありがとうございます。11分後に受理します。 – AviateX14

0

あなたがインデックス付き配列としてデータを返すmysql_fetch_row()を、使用しています。代わりにmysql_fetch_assoc()が必要です。

0

mysql_fetch_rowは、列挙された配列を返します。

あなたはmysql_fetch_arrayが必要です。

別の方法としては、列のインデックスで値を取得できます。

while($row = mysql_fetch_row($result)) { 
    $id = $row[0]; 
    $ip = $row[1]; 
    $entry = $row[2]; 
    $count = $row[3]; 
    $i++; 
} 
0

は、だけではなく、mysql_fetch_assocを試してみてください。

0

あなたはmysql_fetch_assocが必要です。mysql_fetch_rowは、数値インデックスを持つプレーンな配列を返します。

関連する問題