[英]Escape some characters in a echo - PHP
我想花点时间显示类似json文件的内容。 这是我要模仿的JSON文件,但使用PHP和MYSQL
{
"success": 1,
"result": [
{
"id": "293",
"title": "This is warning class event",
"url": "http://www.example.com/",
"class": "event-warning",
"start": "1362938400000",
"end": "1363197686300"
},
{
"id": "294",
"title": "This is information class ",
"url": "http://www.example.com/",
"class": "event-info",
"start": "1363111200000",
"end": "1363284086400"
},
{
"id": "297",
"title": "This is success event",
"url": "http://www.example.com/",
"class": "event-success",
"start": "1363284000000",
"end": "1363284086400"
}
然后我继续做一会儿
$link=mysql_connect("localhost", "user", "pass");
mysql_select_db("db",$link) OR DIE ("Error: No es posible establecer la conexión");
mysql_set_charset('utf8');
$eventos= mysql_query("SELECT * from eventos",$link);
echo ("{'success': 1, 'result': [");
while($matrizu=mysql_fetch_array($eventos))
{
$evento=$matrizu["id"];
$nombre=$matrizu["name"];
$clase=$matrizu["categoria"];
$inicio=$matrizu["datetime"];
$final=$matrizu["end"];
echo ('"{"
"id": ".$evento.",
"title": ".$nombre.",
"url": "http://www.example.com",
"class": ".$clase.",
"start": ".$inicio.",
"end": ".$final."
"}",');
}
echo("
]
}");
但是我无法逃脱字符,因为它看起来像JSON文件。 这是用于此Bootstrap日历的 。
日历的作者说,我必须做这样的事情:
<?php
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');
$start = $_REQUEST['from'] / 1000;
$end = $_REQUEST['to'] / 1000;
$sql = sprintf('SELECT * FROM events WHERE `datetime` BETWEEN %s and %s',
$db->quote(date('Y-m-d', $start)), $db->quote(date('Y-m-d', $end)))
$out = array()
foreach($db->query($sql) as $row) {
$out[] = array(
'id' => $row->id,
'title' => $row->name,
'url' => Helper::url($row->id),
'start' => strtotime($row->datetime) . '000'
);
}
echo json_encode($out);
exit;
而且也不起作用
您要显示的第二个选项是要走的路,当有内置的PHP函数生成JSON时,尝试手动创建格式正确/转义的JSON绝对没有意义。 从结构上讲,您需要使用success
键和result
键启动数组,然后将数据库结果推入result
键:
$out = array(
'success' => 1,
'result' => array()
);
现在,您可以轻松获取值并将其推入result
键:
foreach($db->query($sql) as $row) {
$out['result'][] = array(
'id' => $row['id'],
'title' => $row['name'],
'url' => Helper::url($row['id']), // up to you whether this is correct here...
'class' => $row['categoria']
'start' => $row['datetime'],
'end' => $row['end']
);
}
那只是您的原始尝试,并将变量插入第二个示例中- 这是PDO查询手册FYI 。 附带说明一下,您的表中不应有一个名为datetime
的字段-虽然它不是保留字,但由于它是列类型,因此也不是很好的做法。
现在,您去:
echo json_encode($out);
...,并且您应该拥有想要的JSON。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.