【问题标题】:PHP : Return JSON content instead of String from database [duplicate]PHP:从数据库中返回 JSON 内容而不是字符串 [重复]
【发布时间】: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"; 
}
?>

【问题讨论】:

  • 您的查询不安全/容易受到注入攻击。

标签: php mysql json


【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 2018-07-03
      相关资源
      最近更新 更多