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 内容而不是字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在PHP中返回Json数据

jQuery Ajax 调用返回 JSON 字符串而不是对象数组

从 Spring WebFlux 返回 Flux<String> 返回一个字符串而不是 JSON 中的字符串数组

json_encode/json_decode - 在 PHP 中返回 stdClass 而不是 Array

在 PHP 中使用来自 AJAX 请求的 JSON 字符串 [关闭]

对数组内容使用了json_encode返回汉字内容返回了空值