我用MYSQL管理工具NAVICAT里面的查询工具查询以下:
SELECT  DATE_FORMAT(real_time,"%H%i"),stock_price,turnover,bigbuycount,bigsellcount FROM stock_data WHERE stock_code=883300 and get_time = "2012-09-28" and real_time="09:30:00"
有一条记录。
但是我在PHP程序中输出这个结果时却没有结果。
这是什么问题?

解决方案 »

  1.   

    看下程序有没有出错,客户端和自己代码有个不同的地方是:客户端是会自动发其他的mysql 命令过去的.
    比如show @@...
      

  2.   

    程序没啥错,我把查询限制条件更改为“WHERE get_time = "2012-09-28" and real_time="09:30:00”
    在程序里有8条记录
    而在NAVICAT里面有9条。
    这是什么原因少一条记录呢。而且少的正是我前面要查询的那条。
      

  3.   

    我的程序哪有错?我真没发现
    <?php
    header ( "Content-Type: text/html; charset=utf-8" );
    date_default_timezone_set ( 'PRC' );
    $Link = mysql_connect ( "localhost", "root", "root" );
    if (! $Link) {
    echo "与数据库连接失败!";
    exit ();
    }
    mysql_select_db ( "stock" );
    $sql = 'SELECT  DATE_FORMAT(real_time,"%H%i"),stock_price,turnover,bigbuycount,bigsellcount FROM stock_data WHERE stock_data.get_time = "2012-09-28" AND
    stock_data.real_time = "09:30:00" AND stock_data.stock_code = "883300"';
    $res = mysql_query ( $sql );
    $arr = mysql_fetch_array($res);
    echo"<table>";
    while($arr = mysql_fetch_array($res)){
    echo'<tr>';
        echo'<td>'.$arr['DATE_FORMAT(real_time,"%H%i")'].'</td>';
        echo"<td>".$arr["stock_price"]."</td>";
        echo"<td>".$arr["turnover"]."</td>";
        echo"<td>".$arr["bigbuycount"]."</td>";
        echo"<td>".$arr["bigsellcount"]."</td>";
    echo"</tr>";


    }
    echo"</table>";
      

  4.   

    编码问题?
    $res = mysql_query ( $sql );
    echo mysql_num_rows($res);    //值是多少
      

  5.   

    值是1,可记录不显示,为什么?引用 4 楼 的回复:
    编码问题?
    $res = mysql_query ( $sql );
    echo mysql_num_rows($res); //值是多少
    [/Quote]
      

  6.   

    你是说操作系统吧,我检查过,是东八区 跟程序里的PRC一致
      

  7.   

    哪里不显示? 你说while里面的td没有值?
      

  8.   

    是的,我在DOS里查询是有值的,为啥TD里没有输出
    如果我改变限制条件,DOS下MYSQL得到9条记录,在网页上只有8条 总是少一条。
      

  9.   

    太奇怪了,DOS下查询的结果记录数目居然跟网页输出的相差一条
      

  10.   

    我自己找到原因了,我把程序调整为
    <?php
    header ( "Content-Type: text/html; charset=utf-8" );
    date_default_timezone_set ( 'PRC' );
    $Link = mysql_connect ( "localhost", "root", "root" );
    if (! $Link) {
    echo "与数据库连接失败!";
    exit ();
    }
    mysql_select_db ( "stock" );
    $sql = 'SELECT DATE_FORMAT(real_time,"%H%i"),stock_price,turnover,bigbuycount,bigsellcount FROM stock_data WHERE stock_data.get_time = "2012-09-28" AND
    stock_data.real_time = "09:30:00" AND stock_data.stock_code = "883300"';
    $res = mysql_query ( $sql );
    //$arr = mysql_fetch_array($res);echo"<table>";去掉
    while(list ( $realtime, $stock_code, $price, $turnover, $bigbuycount, $bigsellcount ) = mysql_fetch_row ( $res ))
    echo'<tr>';
    echo'<td>'.$arr['DATE_FORMAT(real_time,"%H%i")'].'</td>';
    echo"<td>".$arr["stock_price"]."</td>";
    echo"<td>".$arr["turnover"]."</td>";
    echo"<td>".$arr["bigbuycount"]."</td>";
    echo"<td>".$arr["bigsellcount"]."</td>";
    echo"</tr>";
    }
    echo"</table>";这样结果就显示了,可是我不明白原理,为什么我用mysql_fetch_row 替换mysql_fetch_array就行了呢
      

  11.   


    $arr = mysql_fetch_array($res);     //哥,你这里先取了一次,但是并没有使用这个结果
    echo"<table>";
    while($arr = mysql_fetch_array($res)){     //然后,这里才从第二行数据开始使用,肯定要少一条啊
    echo'<tr>';
    echo'<td>'.$arr['DATE_FORMAT(real_time,"%H%i")'].'</td>';
    echo"<td>".$arr["stock_price"]."</td>";
    echo"<td>".$arr["turnover"]."</td>";
    echo"<td>".$arr["bigbuycount"]."</td>";
    echo"<td>".$arr["bigsellcount"]."</td>";
    echo"</tr>";