我有一个小的PHP脚本,它有
$query = "SELECT MAX(id) FROM `dbs`";
//query run
$row = mysql_fetch_array($result);
$val = $row[0];它运行得很好,但是我想知道为什么我不能访问带有fieldname的行,比如如果我有这样的
$query = "SELECT id FROM `dbs`";我可以使用下面的
$val = $row['id'];但是每当我使用这个MAX()函数时,我必须更改为
$val = $row[0];访问这些值
我对此一无所知。任何帮助都将不胜感激。谢谢
发布于 2012-02-11 00:38:26
你需要给它一个别名:
<?php
$query = "SELECT MAX(id) AS `id` FROM `dbs`";
//query run
$row = mysql_fetch_array($result);
$val = $row['id'];编辑:
为了解释这一点,最好显示一个不同查询的示例:
SELECT MAX(`id`) AS `maxId`, `id` FROM `dbs`使用上面的代码,它将返回与表中的行一样多的两列- id和maxId (尽管由于函数的性质,maxId在每一行中都是相同的)。如果不给它一个别名,MYSQL就不知道该怎么叫它,所以当你返回结果时,它不会有一个关联的名字。
希望这有助于解释这一点。
发布于 2012-02-11 00:38:33
SELECT MAX(id) AS myFieldNameForMaxValue
FROM `dbs`然后
$row = mysql_fetch_array($result);
$val = $row['myFieldNameForMaxValue']; 发布于 2012-02-11 00:48:08
如果您在mysql命令行上运行此查询,您将看到mysql返回的字段名为MAX(id)。尝试在phpmyadmin上运行,您将看到相同的结果。因此,如果您尝试$row‘’MAX(Id)‘,它将会起作用。当使用mysql函数时,它被添加到名称中,所以使用别名,就像其他人在这里所说的那样,然后就可以开始了:从dbs中选择MAX(id)作为id。另外,别忘了使用`中的` chars, just in case you have some columns/tables with reserved names, like。
https://stackoverflow.com/questions/9231259
复制相似问题