而循环和json

时间:2015-07-06 15:21:38

标签: php arrays json twitter-typeahead

我正在使用Twitter Typeahead prefetch来搜索(json)书籍列表。

我需要创建一个对象数组,其中包含本书的titlepublication_date - 我只是不确定如何!到目前为止,我只能获得这个头衔。

我目前使用的代码有效,但它只返回书名,我不知道为了检索publication_date我还需要更改什么。

也许我需要一个foreach而不是while循环?对我来说很新,并且在我学习的过程中学习。

我目前的代码;

<?php
include(URL. '/lib/conn.php'); // include the db connection

$sql = ("SELECT * FROM publication");

if(!$result = $db->query($sql)){
    die('There was an error running the query [' . $db->error . ']');
}

$data = array();

while($row = $result->fetch_assoc()){
    $data[] = utf8_encode($row['title']);
}

file_put_contents(URL . '/title.json', json_encode($data)); 

?>

上面的代码成功创建了一个title.json,并用书名列表填充它。

感谢任何建议或指示。

2 个答案:

答案 0 :(得分:1)

while($row = $result->fetch_assoc())
{
    $data[] = array('title' => utf8_encode($row['title']),
                    'date'  => $row['publication_date']);
}

应该做的伎俩。

答案 1 :(得分:1)

首先,我只需从数据库中选择您需要的行:

SELECT title, publication_date FROM publication

这将a)限制您发送的数据的带宽,以及b)在获取结果和分配数据结构时让您的生活更轻松。

if(!$result = $db->query($sql)){
    die('There was an error running the query [' . $db->error . ']');
}

$data = array();

while($row = $result->fetch_assoc()){
    $data[] = $row; // just assign each row to the $data array
}

file_put_contents(URL . '/title.json', json_encode($data));

此外,如果您的内容在数据库中进行了utf-8编码,则没有理由在显示之前对其进行编码。