帮助需要好友,我想将有关从数据库检索到的图像的信息转换为json格式。 以下是从数据库中获取图像信息的代码
// Query for a list of all existing files
$sql = 'SELECT `id`, `name`, `mime`, `size`, `created` FROM `file`';
$result = $dbLink->query($sql);
// Check if it was successfull
if($result) {
// Make sure there are some files in there
if($result->num_rows == 0) {
echo '<p>There are no files in the database</p>';
}
else {
// Print the top of a table
echo '<table width="100%">
<tr>
<td><b>Name</b></td>
<td><b>Mime</b></td>
<td><b>Size (bytes)</b></td>
<td><b>Created</b></td>
<td><b> </b></td>
</tr>';
// Print each file
while($row = $result->fetch_assoc()) {
echo "
<tr>
<td>{$row['name']}</td>
<td>{$row['mime']}</td>
<td>{$row['size']}</td>
<td>{$row['created']}</td>
<td><a href='get_file.php?id={$row['id']}'>Download</a></td>
</tr>";
}
// Close table
echo '</table>';
}
// Free the result
$result->free();
}
else
{
echo 'Error! SQL query failed:';
echo "<pre>{$dbLink->error}</pre>";
}
这是我想要实现的目标
{
"success": 1,
"message": "images Available",
"images": [
{
"Name": "richmahnn",
"Mime": "ajh544k",
"Size": "222",
"Created": "232014",
"url": "http://localhost/imageUpload/ajh544k.jpg"
},
{
"Name": "john",
"Mime": "ajh5644k",
"Size": "15",
"Created": "232014",
"url": "http://localhost/imageUpload/ajh5644k.jpg"
},
到目前为止,这是我得到的
答案 0 :(得分:1)
答案 1 :(得分:1)
根据您所说的所需的JSON数据,这似乎是最简单的解决方案。
基本上使用stdClass()
创建一个新类,它满足您对JSON数据作为对象的要求。
然后更改while循环以将结果行作为对象而不是assoc数组返回,然后可以将其放入新类的images
数组属性中,每个返回一行。
现在,您拥有PHP类中的所有数据,只需使用json_encode()
将其转换为JSON字符串即可。结果可以作为返回的数据回显。
我假设您用来封装数据库访问代码的类有一个方法,它将返回一个对象形式的行以及一个assoc数组。
// Query for a list of all existing files
$sql = 'SELECT `id`, `name`, `mime`, `size`, `created` FROM `file`';
$result = $dbLink->query($sql);
$toJson = new stdClass();
// Check if it was successfull
if($result) {
// Make sure there are some files in there
if($result->num_rows == 0) {
echo '<p>There are no files in the database</p>';
toJson->success = 0;
toJson->message = 'There are no files in the database';
} else {
// Print the top of a table
echo '<table width="100%">
<tr>
<td><b>Name</b></td>
<td><b>Mime</b></td>
<td><b>Size (bytes)</b></td>
<td><b>Created</b></td>
<td><b> </b></td>
</tr>';
// Print each file
while($row = $result->fetch_object()) {
echo "<tr>
<td>{$row->name}</td>
<td>{$row->mime}</td>
<td>{$row->size}</td>
<td>{$row->created}</td>
<td><a href='get_file.php?id={$row->id}'>Download</a></td>
</tr>";
// amend and existing properties
$row->name = 'http://'
. $_SERVER['HTTP_HOST']
. '/imageUpload/'
. $row->name;
// or alternatively add a new property
$row->url = 'http://'
. $_SERVER['HTTP_HOST']
. '/imageUpload/'
. $row->name;
$toJson->images[] = $row;
}
// Close table
echo '</table>';
$toJson->message = 'images Available';
$toJson->imageCount = $result->num_rows;
}
// Free the result
$result->free();
} else {
toJson->success = 0;
toJson->message ='Error! SQL query failed:';
echo 'Error! SQL query failed:';
echo "<pre>{$dbLink->error}</pre>";
}
如果您通过页面上的AJAX调用来调用它,那么只需返回数据
echo json_encode($toJson);
exit;
如果您使用生成的json字符串执行其他操作,则只需执行此操作
$json_string = json_encode($toJson);