2013-07-29 35 views
1

你好我正在写一个聊天脚本的终点。剩下的唯一的事情就是比较用户看到的数量与数据库中总数量的差异。现在下面这行看起来不起作用,我一直在盯着它一个小时,并找不到原因。SELECT COUNT(id)不给我正确的值

$count = mysql_query('SELECT COUNT(id) as total FROM konsultaciq WHERE cat = "'.$_SESSION['key'].'" '); 
echo count(total); 

回声给我的“1”的值,当有下是“猫”

+3

您是否提取了结果? –

+2

首先,'total'应该定义为一个常量,或者应该是'$ total'。无论哪种情况,您都不会为其分配值。其次,MySQL扩展已被弃用。 **现在停止使用它并使用PDO或MySQLi代替 – Phil

+1

不应该是'echo $ count(total);'''echo $ total;'或echo $ count;'?尝试其中之一。你有'$ count'作为你的变量,但没有正确回应它。 –

回答

4

更改您的代码如下。

$count = mysql_query('SELECT COUNT(id) as total FROM konsultaciq WHERE cat = "'.$_SESSION['key'].'" '); 
$res=mysql_fetch_array($count); 
echo $res[0]; // it gives actual value of total 
3
$count = mysql_query('SELECT COUNT(id) as total FROM konsultaciq WHERE cat = "'.$_SESSION['key'].'" '); 
$arr = mysql_fetch_array($count); 
echo $arr['total']; 

使用上面的代码数据库中的8项。由于您没有通过使用mysql_fetch_*来获取数据,并且如果您将使用计数函数,那么它将显示1,因为它正在读取一行。

count函数用于计算PHP中数组中元素的数量,并且只有一个元素。

所以用$arr['total']来得到查询的总计数值。

注意:mysql_ *已被弃用在PHP的最新版本中。因此请使用 mysqli_ *或PDO。

+1

最好使用'mysqli()'或pdo,因为这个扩展名已被弃用。 – mattosmat

+0

@mattosmat是的,我知道。我使用了PDO。但OP是问在MySQL中,这就是为什么在mysql_ *中给出答案。为什么downvote。 –

+0

@BrokenHeartღ我同意你的观点,并且关于OP的问题与MySQL *相关,因为OP没有要求MySQLi替代。 –

3

你应该使用MySQL扩展。下面是使用PDO代替的示例

$pdo = new PDO('mysql:host=localhost;dbname=your_db_name;charset=utf8', 'username', 'password'); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

$stmt = $pdo->prepare('SELECT COUNT(1) FROM konsultaciq WHERE cat = ?'); 
$stmt->bindParam(1, $_SESSION['key']); 
$stmt->execute(); 

echo $stmt->fetchColumn();