猿问

php读数据库有3000条记录,我直接用table打印出来却总是有几百个?

public function order_outexcel(){
        header("Content-type: text/html; charset=utf-8");        
        $time=IReq::get('outage');
        $or=new IModel('order');        
        $orlist=$or->query("if_del=0 and create_time like '%".$time."%'");
        echo "<html><body>";
        echo count($orlist);
        echo "<table border='1'>";
        echo "<tr>
            <td>序列</td>
            <td>订单编号</td>
            <td>日期</td>
            <td>用户名</td>
            <td>收货人</td>    
            <td>电话</td>            
            <td>收货地址</td>            
            <td>订单金额</td>
            <td>支付方式</td>
            <td>支付交易号</td>
            <td>支付状态</td>
            <td>快递公司</td>
            <td>快递单号</td>
            <td>发货状态</td>
            <td>商品信息</td>            
        </tr>";
        $user=new IModel('user');
        foreach($orlist as $k=>$v){
            if($v['province']==''){
                 $address = $v['province_title'].$v['city_title'].$v['area_title'].$v['address'];
            }else{
                $address = join('&nbsp;',area::name($v['province'],$v['city'],$v['area'])).$v['address'];
            }
            
            $us=$user->getObj('id='.$v['user_id'],'username');            
            
            echo "<tr>";
                echo "<td>".$k."</td>";
                echo "<td>".$v['order_no']."</td>";
                echo "<td>".$v['create_time']."</td>";
                echo "<td>".$us['username']."</td>";
                echo "<td>".$v['accept_name']."</td>";
                echo "<td>".$v['mobile']."</td>";                
                echo "<td>".$address."</td>";              
                echo "<td>".$v['order_amount']."</td>";
                echo "<td>".$v['order_amount']."</td>";
                echo "<td>".$v['trade_no']."</td>";
                echo "<td>".Order_Class::getOrderPayStatusText($v)."</td>";
                echo "<td></td>";
                echo "<td></td>";
                echo "<td></td>";
                echo "<td></td>";                
                
            echo "</tr>";
        }
        echo "</table>";
        echo "</body></html>";
    }

我访问了一个mysql数据库表,通过条件查询符合条件的记录有3000条记录,我循环打印出来,总是几百条,死活不能全部显示出来。有人遇到过吗?

上面的3576是count($orlist)的结果,也就是说读到的数据是完整的,但打印没打印完整,而且如果我把打印的字段数减少也可以打印全。
https://img1.mukewang.com/5c8f6a1c0001b17c07300296.jpghttps://img4.mukewang.com/5c8f6a1e0001202008000135.jpg
https://img3.mukewang.com/5c8f6a1f00012bd308000070.jpg

首先肯定不是php时间超时的问题,因为结果出来很快。

DIEA
浏览 609回答 3
3回答

慕尼黑8549860

[更新] 我把打印的字段数减少也可以打印全。 我看你增加了这个测试,这就验证了我的猜想。 字段减少能够打印全,我怀疑是你在上面处理address的时候拼接什么的有问题,造成了html被吞掉了。 你把for循环里面的处理干掉,再试试能够完全打印,如果可以的话,单独输出上面的一些处理。看看是否有什么特殊标记还是什么的。 这样子没看出什么问题,你有试过下面两种吗? 不用 html 标签,直接输出其中的 $k以及一个$v的内容 只输出一个 html 标签包裹的内容 如 <tr><td>$k</td></tr> 看一下上面两种方式分别输出什么,能否完整输出。

跃然一笑

代码贴全呀, $orlist 这个变量怎么拿到的 ? 

米脂

直接 echo count($orlist); 先看看数量对不对吧然后可以把 sql 运行一下
随时随地看视频慕课网APP
我要回答