2012-08-15 12 views
0

我正在尝试查询以输出来自特定事件的参与者数量。该表名为'payments',事件的ID位于'itemid'列中。这是我创建的,但它似乎不起作用在浏览器中,但在phpMyAdmin中正常工作。每次我加载页面而不是看到一个数字,我看到'数组'作为我的查询输出。为什么我不断收到'数组'作为查询的输出?

固定它:

$res = mysql_query("SELECT COUNT(*) AS entrants FROM payments WHERE itemid='Sample Event 1'") or die(); 
$row = mysql_fetch_array($res,MYSQL_ASSOC); 

<?php echo $row['entrants']; ?> 
+0

强烈的帖子,感谢您的意见。 – tenderloin 2012-08-15 14:33:47

回答

1
include ("includes/db.php"); 
// Get data from the database for content 
$res = mysql_query("SELECT COUNT(*) AS entrants FROM payments WHERE itemid='Sample Event 1'") or die(); 
$row = mysql_fetch_array($res,MYSQL_ASSOC); 

<?php echo $row['entrants']; ?> 

现在工作正常。

10

你总是得到一个数组,因为你把它拿来作为一个与此:

mysql_fetch_array($entrant_query); 

的fetch_array函数将返回该行作为一个数组。

还有一些其他的方法来从数据库返回一行 - 尽管我猜你正在寻找一个为fetch_row

你可以尝试var_dump,而不是看你正在返回什么。

<?php 
$a = array(1, 2, array("a", "b", "c")); 
var_dump($a); 
?> 

// output: 

array(3) { 
    [0]=> 
    int(1) 
    [1]=> 
    int(2) 
    [2]=> 
    array(3) { 
    [0]=> 
    string(1) "a" 
    [1]=> 
    string(1) "b" 
    [2]=> 
    string(1) "c" 
    } 
} 

最后,mysql_*功能过时,你可能想看看在移动PDO代替。它更安全,更灵活,如果你刚刚开始,更好的选择学习。

+2

+1。 (mysql_函数被“弃用”,而不是“折旧”)。mysqli_是PDO的替代品。) – spencer7593 2012-08-15 14:19:07

+0

谢谢你的提升。 – tenderloin 2012-08-15 14:33:29

1

方法mysql_fetch_array()将查询结果加载到数组中,然后可以使用该数组访问数据。您可以循环访问数组以提取所有数据,也可以直接访问特定数据。

1

即使您的查询要返回记录的计数并返回1个字段,您仍然调用函数mysql_fetch_array,因此它只是返回一个包含无数个字段的数组。

通常情况下,如果你做了SELECT * from users,那么你会一直循环,直到没有更多的行,然而,仅仅因为你的查询返回1字段,它只是一个数组1,因为这是它的工作方式。

相关问题