PHP:从数据库中返回 JSON 内容而不是字符串 [重复]
Posted
技术标签:
【中文标题】PHP:从数据库中返回 JSON 内容而不是字符串 [重复]【英文标题】:PHP : Return JSON content instead of String from database [duplicate] 【发布时间】:2014-07-02 06:46:30 【问题描述】:我想返回一个 JSON 对象,其中包含从我的数据库中检索到的信息。 今天,我只检查用户名/密码对是否正确并返回一个字符串“成功”。
tbl_user 表的结构如下:
================================
============ tbl_user ==========
================================
- id
- username
- password
- name
- surname
- city
================================
================================
如果数据库中存在用户名/密码对,我想返回一个像这样的 JSON 对象:
username : ..,
name : ..,
surname : ..,
city : ..
我该怎么做?
这是我的 php 代码:
<?php
$hostname_localhost ="localhost";
$database_localhost ="database";
$username_localhost ="myusername";
$password_localhost ="mypassword";
$localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost)
or
trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_localhost, $localhost);
$username = $_POST['username'];
$password = $_POST['password'];
$query_search = "select * from tbl_user where username = '".$username."' AND password = '".$password. "'";
$query_exec = mysql_query($query_search) or die(mysql_error());
$rows = mysql_num_rows($query_exec);
//echo $rows;
if($rows == 0)
echo "fail";
else
echo "success";
?>
【问题讨论】:
您的查询不安全/容易受到注入攻击。 【参考方案1】:首先改变你的选择语句:
select field1, field2, ... from tbl_user where username = ....
然后:
$rows = mysql_fetch_assoc($query_exec);
// you will get JSON data of all fields used in your selection
$jsonData = json_encode($rows);
【讨论】:
@wawanopoulos,抱歉代码错误。正确的代码是: $rows = mysql_fetch_assoc($query_exec); (更新了我的答案)【参考方案2】:在数组中获取结果,然后将其编码为 JSON,如下所示:
echo json_encode($result);
【讨论】:
【参考方案3】:只需使用 php json encode 函数进行输出,例如:
echo json_encode($rows);
【讨论】:
以上是关于PHP:从数据库中返回 JSON 内容而不是字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
jQuery Ajax 调用返回 JSON 字符串而不是对象数组
从 Spring WebFlux 返回 Flux<String> 返回一个字符串而不是 JSON 中的字符串数组
json_encode/json_decode - 在 PHP 中返回 stdClass 而不是 Array