免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: NewCore
打印 上一主题 下一主题

mysql查询语句+count函数,为什么没有结果? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-02-20 20:54 |只看该作者
$row = mysql_fetch_array($result);
.....
$res = mysql_query($query) or die("Invalid query: "   .   mysql_error());

两个错误,一个是$result,一个是$res
先后次序也应该颠倒一下.

论坛徽章:
0
12 [报告]
发表于 2009-02-21 12:09 |只看该作者

回复 #11 wildlily980 的帖子

大哥,$result和$res本来就是不一样的!!!

$result是前面查询的结果,包括查询到的所有课程编号。这里用查询到的课程编号再去查每门课程的选课人数;
$res是查询选课人数时的返回值,在这里应该没有什么作用!

[ 本帖最后由 NewCore 于 2009-2-21 12:11 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2009-02-21 18:30 |只看该作者
那你的$stu_num变量又是从哪里来的值呢?
改成这样:
$res=...
$stu_num_row=mysql_fetch_array($res);
echo $stu_num_row['stu_num'];

论坛徽章:
0
14 [报告]
发表于 2009-02-22 09:20 |只看该作者

回复 #13 wildlily980 的帖子

stu_num的值在select返回后就会取得了,这是因为在select语句中“as stu_num”得到的,其他地方都是这样做的,我实在想不通为什么这个地方会有问题。

  1. for($i=0;$i<$dd;$i++) {
  2.         $row = mysql_fetch_array($result);
  3.         
  4.         /* Get student number of each course */
  5.         //$query = "Select count(*) as stu_num from selected where Course_id='$row[Course_id]'";
  6.         //$query = "Select count(*) as stu_num from selected where Course_id=".$row['Course_id'];
  7.         $query = "Select count(*) as stu_num from selected where Course_id='{$row['Course_id']}'";
  8.         $res = mysql_query($query) or die("Invalid query: "   .   mysql_error());
  9.         /********************************************************/
  10.         echo $query, "\n", $row['Course_id'], "\n", $res['stu_num'], "\n", "xxx
  11.         /********************************************************/
  12.         echo "<tr bgcolor=\"#CCFF99\"><td>".$row["Course_id"]."</td><td>".$row["Course_name"]." </td><td>".$row["Teacher_name"]. "</td><td>".$row["Course_time"]."</td><td>".$row["Course_place"]."</td><td>".$row["Credit"]."</td><td>".$stu_num."</td><td><a href=\"delete.php?courseid=".$row["Course_id"]."\">&sup3;·&Iuml;&ucirc;</a></td></tr>";
  13.     }
复制代码


修改过的部分如上所示,还是没有值。页面显示如下:
  1. Select count(*) as stu_num from selected where Course_id='1' 1 xxx
  2. Select count(*) as stu_num from selected where Course_id='3' 3 xxx
  3. Select count(*) as stu_num from selected where Course_id='2' 2 xxx
复制代码

[ 本帖最后由 NewCore 于 2009-2-22 09:22 编辑 ]

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
15 [报告]
发表于 2009-02-22 10:10 |只看该作者
能不能先来点简单的测试(我人笨,简单点好用):
1. 把你的语句在mysql命令窗口输入,结果如何?
2. 先不用count,再结合mysql_num_rows,看看得到的结果如何呢?
3. 附加的,先去掉循环,直接操作,再var_dump打印上一步的结果。因为mysql的查询啊,一步出错,满盘皆错啊!

论坛徽章:
0
16 [报告]
发表于 2009-02-22 12:09 |只看该作者

回复 #15 HonestQiao 的帖子

1、这个我试过了,在MySQL命令行下是可以正常查询出结果的,以课程号1为例:
mysql> Select count(*) as stu_num from selected where Course_id='1';
+---------+
| stu_num |
+---------+
|       1 |
+---------+
1 row in set (0.01 sec)

2、用mysql_num_rows可以!!!

3、用count的话,放到循环外面去获取选课人数还是不行。

看来还是count使用不当地问题?不过多些斑竹,总算有一个可以解决的办法了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP