<?php
$json = array();
$sql=$empire->query("select * from {$dbtbpre}ecms_news where classid=4 order by lastdotime DESC limit 9999999999");
while($r=$empire->fetch($sql))//循环获取查询记录
{
$json[] = array(
'b' => $r['title'],
'm' => $r['smalltext'],
'u' => $r['titleurl'],
't' => $r['titlepic']
);
}
echo json_encode($json);
?>
json_encode — 对变量进行 JSON 编码返回值:
成功则返回 JSON 编码的 string 或者在失败时返回 FALSE 。
一行简化:
<?php
$data=$empire->query("select `title` as `b`,`smalltext` as `m`,`titleurl` as `u`,`titlepic` as `t` from {$dbtbpre}ecms_news where classid='4' order by lastdotime DESC");
echo json_encode($data);
?>
太牛了,大神我后来自己想了个笨办法
[e:loop={'select * from [!db.pre!]ecms_news where classid=4 order by lastdotime DESC limit 9999999999',22,24,0}]
<?php
$num=$empire->num("select id from {$dbtbpre}ecms_news where classid=4");
if($bqno==$num){$class="";}else{$class=",";}
?>
{
"b": "<?=DoTitleFont($bqr[titlefont],esub($bqr[title],12,'...'))?>",
"m": "<?=esub($bqr[smalltext],87,'...')?>",
"u": "<?=$bqsr['titleurl']?>",
"t": "<?=$bqr[titlepic]?>"
}<?=$class?>
[/e:loop]
狗尾续貂,多谈谈。在循环中,涉及字符串拼接的时候,那个间隔符(在楼主的例子里是逗号),不希望在最后出现,解决方法有这么几种:
1.事后去掉
2,3楼的大神,都给出了方法。他们说:可以用rtrim() 函数移除字符串右侧的空白字符或其他预定义字符。
2.事前判断
这有两种方法,前端判断和后端判断。
后端判断,需要知道谁是最后一条记录。在记录数不确定的时候,就要增加一条查询,取得记录数。楼主想到了这个笨方法:
<?php
$num=$empire->num("select id from {$dbtbpre}ecms_news where classid=4");?>
[e:loop={'select * from [!db.pre!]ecms_news where classid=4 order by lastdotime DESC',0,24}]
<?php
if($bqno==$num){$class="";}else{$class=",";}
?>
{
"b": "<?=DoTitleFont($bqr[titlefont],esub($bqr[title],12,'...'))?>",
"m": "<?=esub($bqr[smalltext],87,'...')?>",
"u": "<?=$bqsr['titleurl']?>",
"t": "<?=$bqr[titlepic]?>"
}<?=$class?>
[/e:loop]
前端判断,似乎是个脑筋急转弯,的确比后端判断简练:
[e:loop={'select * from [!db.pre!]ecms_news where classid=4 order by lastdotime DESC',0,24}]
<?php
if($bqno==1){$class="";}else{$class=",";}
?>
<?=$class?>{
"b": "<?=DoTitleFont($bqr[titlefont],esub($bqr[title],12,'...'))?>",
"m": "<?=esub($bqr[smalltext],87,'...')?>",
"u": "<?=$bqsr['titleurl']?>",
"t": "<?=$bqr[titlepic]?>"
}
[/e:loop]
3.使用数组使用数组记录数据,最后再拼接,想到即可做到 大神在4楼给出了方法,非常简练清晰。
他最后提到了一行简化,在mysql级别对数据做了封装,如果字段数据不需要提别处理的话,的确简练。另外就是他这个一行代码有点bug,正确的应该是这样的:
<?php
$json = array();
$sql=$empire->query("select `title` as `b`,`smalltext` as `m`,`titleurl` as `u`,`titlepic` as `t` from {$dbtbpre}ecms_news where classid=4 order by lastdotime DESC");
while($r=$empire->fetch($sql))$json[] =$r;
echo json_encode($json);
?>
php中,不用循环,我们无法一次性取得数据表的查询结果。好在今天,pdo提供了fetch_all方法取得所有行。 版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论