SELECT COUNT(id)不能给我正确的值

时间:2013-07-29 04:17:04

标签: php mysql sql

你好,我正在编写聊天脚本的终点。剩下的唯一事情就是将用户看到的消息数量与数据库中的总数进行比较。现在,以下一行似乎不起作用,我已经盯着它看了一个小时,但找不到原因。

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

当数据库中有8个条目在“cat”下时,echo给我一个值“1”

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

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

使用上面的代码。由于您没有使用mysql_fetch_*获取数据,并且您将使用count函数,因此它将显示1,因为它正在获取一行。

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

因此请使用$arr['total']获取查询总计数的值。

  

注意:PHP的最新版本中不推荐使用mysql_ *。所以使用   mysqli_ *或PDO。

答案 2 :(得分: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();