我有一些非常简单的代码:
$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选择数据并创建索引&#34; count&#34;对于ip的计数,为什么它说它还没有被定义?
答案 0 :(得分:3)
要将结果行作为关联数组,您应该使用mysql_fetch_assoc
而不是mysql_fetch_row
。
此外,还没有定义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
答案 1 :(得分:0)
您正在使用mysql_fetch_row()
,它将数据作为索引数组返回。您想要mysql_fetch_assoc()
。
答案 2 :(得分:0)
mysql_fetch_row
返回一个枚举数组。
或者,您可以按列索引获取值:
while($row = mysql_fetch_row($result)) {
$id = $row[0];
$ip = $row[1];
$entry = $row[2];
$count = $row[3];
$i++;
}
答案 3 :(得分:0)
只需尝试使用mysql_fetch_assoc。
答案 4 :(得分:0)
您需要mysql_fetch_assoc
,mysql_fetch_row
返回带有数字索引的普通数组。