执行 mysql_real_query 后,如何知道能返回几条记录?目的是想在处理每一条记录的时候,做个进度百分数提示。

解决方案 »

  1.   

    SELECT FOUND_ROWS();
    
      

  2.   

    不过SELECT FOUND_ROWS();是在你的select执行完后才知道的。执行中或执行前没什么好办法,只能通过你自己的程序来估计。
      

  3.   

    直接运行
    SELECT COUNT(*) FROM 
    不行吗?
      

  4.   

    就是直接运行
    select count(*) from tt where 你的条件,取值就OK了。
      

  5.   

    执行两次,对速度肯定有影响,你的目的是做个进度百分数提示,做个近似的就OK了,原来在
    DELPHI中就是这样的。
      

  6.   

    我原来做的就是先用 select count(*) as c0 from tab 得到全部的记录数,然后 select count(*) as c1, fx1,fx2,fx3 from tab group by fx1,fx2,fx3在循环处理时,将后面的c1累计,跟c0一除就是比例。现在的问题是,有的记录c1很大,有的记录c1=1,这样进度表示就不是很匀称,进入c1=1的记录区就像死机一样。我想如果知道第二次的统计记录数c2,将每条记录一次递增,做出来的进度一定像美女的身材一样匀称的。
      

  7.   

    进度一定像美女的身材一样匀称的。 这个做不到,因为你根本没办法预测你的SQL语句会执行多久。 如果忽略SQL执行时间,只看程序处理记录的时间,则可以如你所说。1. select count(*) 取得总记录数。这个比较准确。 也可以估算 SELECT table_rows FROM information_schema.`TABLES` T where table_name='tableName';2. 不需要select count(*) as c1, fx1,fx2,fx3 from tab group by fx1,fx2,fx3, 直接select fx1,fx2,fx3 from tab where ..
    然后直接用C API mysql_num_rows() 得到行数