查询MySQL表,存储在PHP数组中,然后从数组中返回单个值

时间:2012-10-18 13:14:29

标签: php mysql sql arrays

我有一张桌子“rel”

---------------------
|id|refid|cellid|cat|
|1 |1    |1     |1  |
|2 |2    |1     |3  |
|3 |3    |1     |5  |
|4 |3    |5     |2  |
|5 |4    |2     |7  |

我想计算每个cellid具有相同cellid的行数。然后在HTML页面中检索这些计数。

我编写了运行SQL查询的代码并将结果存储在数组中

<?php
// Connect to the database server
$dbcnx = mysql_connect("localhost",USER,PASSWORD);
if (!$dbcnx) {
  echo( "<P>Database Connection Failed</P>" );
  exit();
}
// Select the matrix databse database
  if ( !@mysql_select_db("DATABASE") ) {
    echo( "<P>Not connected to Database</P>" );
    exit();
  }

  $cell_array = array();
  if ($result = mysql_query("SELECT cellid, COUNT(*) FROM rel GROUP BY cellid")) {
    if (mysql_num_rows($result)) {
      while ($row = mysql_fetch_assoc($result)) {
        $array[] = $row;
      }
    }
  }
?>

然后我想使用require从另一个页面访问这个php脚本,然后恢复任何cellid的计数结果,以便我可以将结果放在HTML表中。

这是解决此问题的正确方法吗?如果是这样,从这个数组中调用值的语法是什么,我看到了

echo $cell_array['cellid'];

用于其他答案,但它似乎对我不起作用。

由于

2 个答案:

答案 0 :(得分:1)

COUNT(*)需要ALIAS,以便您可以从中获取值

SELECT cellid, COUNT(*) totalCount
FROM rel 
GROUP BY cellid

所以在PHP中你可以访问

while ($row = mysql_fetch_assoc($result)) 
{
    echo $row["cellid"];
    echo $row["totalCount"];
}

答案 1 :(得分:1)

您要将行添加到名为“$ array”而不是“$ cell_array”的新数组中,因此$ cell_array为空。

给予计数(*)John所提及的别名,然后

更改

$array[] = $row;

$cell_array[$row["cellid"]] = $row['totalcount'];

拉出一个值使用:

echo $cell_array[x];

其中x是您想要计数的cellid。

我还假设你想为“数据库”使用常量,所以改变

if ( !@mysql_select_db("DATABASE") ) {

if ( !@mysql_select_db(DATABASE) ) {