首页 文章

JSON编码MySQL结果

提问于
浏览
282

如何将 json_encode() 函数与MySQL查询结果一起使用?我是否需要遍历行或者是否可以将其应用于整个结果对象?

20 回答

  • 1

    我们可以像这样简化 Paolo Bergantino 答案

    $sth = mysql_query("SELECT ...");
    print json_encode(mysql_fetch_assoc($sth));
    
  • 0

    如何使用MySQL数据库中的数据创建JSON

    JSON(JavaScript Object Notation)现在比XML更受欢迎,因为它轻量级,可读且易于管理,可以跨各种平台交换数据 . 我们将看到如何从存储在MySQL数据库中的Employee表创建JSON数据 .

     echo json_encode($data);
    

    直播:[Example]

  • 463
    $sth = mysqli_query("SELECT ...");
    $rows = array();
    while($r = mysqli_fetch_assoc($sth)) {
        $rows[] = $r;
    }
    print json_encode($rows);
    

    函数 json_encode 需要PHP> = 5.2和 php-json 包 - 如上所述here

    注意:自PHP 5.5.0起,不推荐使用 mysql ,使用 mysqli 扩展名而不是http://php.net/manual/en/migration55.deprecated.php .

  • 1

    试试这个,这将正确创建你的对象

    $result = mysql_query("SELECT ...");
     $rows = array();
       while($r = mysql_fetch_assoc($result)) {
         $rows['object_name'][] = $r;
       }
    
     print json_encode($rows);
    
  • 3

    http://www.php.net/mysql_query说“ mysql_query() 返回资源” .

    http://www.php.net/json_encode表示它可以编码任何值"except a resource" .

    您需要迭代并收集数组中的数据库结果,然后 json_encode 数组 .

  • 0

    谢谢,这对我帮助很大 . 我的代码:

    $sqldata = mysql_query("SELECT * FROM `$table`");
    
    $rows = array();
    while($r = mysql_fetch_assoc($sqldata)) {
      $rows[] = $r;
    }
    
    echo json_encode($rows);
    
  • 1

    谢谢..我的回答是:

    if ($result->num_rows > 0) {
                # code...
                $arr = [];
                $inc = 0;
                while ($row = $result->fetch_assoc()) {
                    # code...
                    $jsonArrayObject = (array('lat' => $row["lat"], 'lon' => $row["lon"], 'addr' => $row["address"]));
                    $arr[$inc] = $jsonArrayObject;
                    $inc++;
                }
                $json_array = json_encode($arr);
                echo $json_array;
            }
            else{
                echo "0 results";
            }
    
  • 3

    根据我的经验,在将数组中的根元素命名为某些内容之前,上述操作无效,在此之前我无法访问最终json中的任何内容 .

    $sth = mysql_query("SELECT ...");
    $rows = array();
    while($r = mysql_fetch_assoc($sth)) {
        $rows['root_name'] = $r;
    }
    print json_encode($rows);
    

    这应该够了吧!

    平价

  • 1

    下面的代码在这里工作正常!

    <?php
    
      $con=mysqli_connect("localhost",$username,$password,databaseName);
    
      // Check connection
      if (mysqli_connect_errno())
      {
       echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }
    
      $query = "the query here";
    
      $result = mysqli_query($con,$query);
    
      $rows = array();
      while($r = mysqli_fetch_array($result)) {
        $rows[] = $r;
      }
      echo json_encode($rows);
    
      mysqli_close($con);
    ?>
    
  • 2

    我的简单修复就是阻止它将语音标记放在数字值周围......

    while($r = mysql_fetch_assoc($rs)){
        while($elm=each($r))
        {
            if(is_numeric($r[$elm["key"]])){
                        $r[$elm["key"]]=intval($r[$elm["key"]]);
            }
        }
        $rows[] = $r;
    }
    
  • 7

    对不起,这个问题过了很长时间,但是:

    $sql = 'SELECT CONCAT("[", GROUP_CONCAT(CONCAT("{username:'",username,"'"), CONCAT(",email:'",email),"'}")), "]") 
    AS json 
    FROM users;'
    $msl = mysql_query($sql)
    print($msl["json"]);
    

    基本上:

    "SELECT" Select the rows    
    "CONCAT" Returns the string that results from concatenating (joining) all the arguments
    "GROUP_CONCAT" Returns a string with concatenated non-NULL value from a group
    
  • 8
    <?php
    define('HOST','localhost');
    define('USER','root');
    define('PASS','');
    define('DB','dishant');
    
    $con = mysqli_connect(HOST,USER,PASS,DB);
    
    
      if (mysqli_connect_errno())
      {
       echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }
    
     $sql = "select * from demo ";
    
     $sth = mysqli_query($con,$sql);
    
    $rows = array();
    
    while($r = mysqli_fetch_array($sth,MYSQL_ASSOC)) {
    
     $row_array['id'] = $r;
    
        **array_push($rows,$row_array);**
    }
    echo json_encode($rows);
    
    mysqli_close($con);
    ?>
    

    aarray_push($rows,$row_array); 帮助构建数组,否则它在while循环中给出最后一个值

    这个工作像 append StringBuilder 的方法 java

  • 41

    使用FOR循环的另一个选项:

    $sth = mysql_query("SELECT ...");
     for($rows = array(); $row = mysql_fetch_assoc($sth); $rows[] = $row);
     print json_encode($rows);
    

    唯一的缺点是循环比较慢,例如虽然或特别是foreach

  • 2

    例如$ result = mysql_query(“SELECT * FROM userprofiles,其中NAME ='TESTUSER'”);

    1.)如果$ result只有一行 .

    $response = mysql_fetch_array($result);
    echo json_encode($response);
    

    2.)如果$ result超过一行 . 您需要迭代行并将其保存到数组中并返回带有数组的json .

    $rows = array();
    if (mysql_num_rows($result) > 0) {
        while($r = mysql_fetch_assoc($result)) {
           $id = $r["USERID"];   //a column name (ex.ID) used to get a value of the single row at at time
           $rows[$id] = $r; //save the fetched row and add it to the array.
        }
    }    
    echo json_encode($rows);
    
  • 1

    我这样解决了

    $stmt->bind_result($cde,$v_off,$em_nm,$q_id,$v_m);
    	$list=array();
    	$i=0;
    	while ($cresult=$stmt->fetch()){	
    				
    	
    		$list[$i][0]=$cde;
    		$list[$i][1]=$v_off;
    		$list[$i][2]=$em_nm;
    		$list[$i][3]=$q_id;
    		$list[$i][4]=$v_m;
    		$i=$i+1;
    	}
    	echo json_encode($list);
    

    这将作为结果集返回到ajax,并在javascript部分中使用json parse,如下所示:

    obj = JSON.parse(dataX);
    
  • 0

    我有同样的要求 . 我只想将结果对象打印成JSON格式,所以我使用下面的代码 . 我希望你能找到一些东西 .

    // Code of Conversion
    $query = "SELECT * FROM products;";
    $result = mysqli_query($conn , $query);
    
    if ($result) {
    echo "</br>"."Results Found";
    
    // Conversion of result object into JSON format
    $rows = array();
    while($temp = mysqli_fetch_assoc($result)) {
        $rows[] = $temp;
    }
    echo "</br>" . json_encode($rows);
    
    } else {
        echo "No Results Found";
    }
    
  • 6

    码:

    $rows = array();
    
    while($r = mysqli_fetch_array($result,MYSQL_ASSOC)) {
    
     $row_array['result'] = $r;
    
      array_push($rows,$row_array); // here we push every iteration to an array otherwise you will get only last iteration value
    }
    
    echo json_encode($rows);
    
  • 2
    $rows = json_decode($mysql_result,true);
    

    就如此容易 :-)

  • 15
    $array = array();
    $subArray=array();
    $sql_results = mysql_query('SELECT * FROM `location`');
    
    while($row = mysql_fetch_array($sql_results))
    {
        $subArray[location_id]=$row['location'];  //location_id is key and $row['location'] is value which come fron database.
        $subArray[x]=$row['x'];
        $subArray[y]=$row['y'];
    
    
     $array[] =  $subArray ;
    }
    echo'{"ProductsData":'.json_encode($array).'}';
    
  • 24

    使用mysql_fetch和json_encode检查下面的代码 . 您将需要遍历行,但如果您使用mysqli,情况将会改变

    $kt_query="SELECT * FROM tbl_xxx";
    $kt_result = mysql_query($kt_query) or die('Query failed: ' . mysql_error());
    $rows= array();
    while($sonuc=mysql_fetch_assoc($kt_result))
    {
        $rows[]=$sonuc;
    }
    print json_encode($rows);
    

相关问题