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(' ',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)的结果,也就是说读到的数据是完整的,但打印没打印完整,而且如果我把打印的字段数减少也可以打印全。
首先肯定不是php时间超时的问题,因为结果出来很快。
3 回答

慕尼黑8549860
TA贡献1818条经验 获得超11个赞
[更新]
我把打印的字段数减少也可以打印全。
我看你增加了这个测试,这就验证了我的猜想。
字段减少能够打印全,我怀疑是你在上面处理address
的时候拼接什么的有问题,造成了html被吞掉了。
你把for循环里面的处理干掉,再试试能够完全打印,如果可以的话,单独输出上面的一些处理。看看是否有什么特殊标记还是什么的。
这样子没看出什么问题,你有试过下面两种吗?
不用 html 标签,直接输出其中的 $k以及一个$v的内容
只输出一个 html 标签包裹的内容 如
<tr><td>$k</td></tr>
看一下上面两种方式分别输出什么,能否完整输出。
- 3 回答
- 0 关注
- 608 浏览
添加回答
举报
0/150
提交
取消