如何使用PHP从我的数据库中获取JSON对象

时间:2014-09-24 17:22:32

标签: php json database

我是PHP开发中的初学者,我对JSON输出有疑问。

我的JSON(我的数据库中的元素)以方括号(JSON数组)开头,如下所示:

[{"Ut_Email":"prova@randomemail.it"}].

不幸的是,我想只看到JSON对象,如下所示:

{"Ut_Email":"prova@randomemail.it"}

有可能吗?

这是我的PHP代码:

<!DOCTYPE html>
<html> 
 <body>
  <?php
   mysql_connect("localhost","name","")
   or die("Impossibile connettersi al server MySQL.\n"); 
   //select the db
   mysql_select_db("name")
   or die("Impossibile aprire il database.\n");
  //create the query
  $sql=mysql_query("select Ut_Email from utente"); 
  /*Il metodo "mysql_fetch_assoc" restituisce un array in base alla query 
  fatta e incrementa il dato*/
  while($row=mysql_fetch_assoc($sql)) 
    //inseriamo tutto nella variabile output
    $output[]=$row;
    /*print the json object*/
    print(json_encode($output)); 
  //close the connection
  mysql_close();
    ?>
</body>
</html>

3 个答案:

答案 0 :(得分:3)

只是不要循环并摆脱输出数组:

$sql=mysql_query("select Ut_Email from utente"); 
if($row=mysql_fetch_assoc($sql)){
   print(json_encode($row)); 
}

答案 1 :(得分:0)

您正在将查询结果添加到数组中,以便json输出包含方括号(javascript中的数组)。如果只想输出一行,可以删除while循环,只需调用$row=mysql_fetch_assoc($sql);,然后在$row上使用json_encode。如果您需要返回多行,则需要该数组,否则它不是有效的json。

答案 2 :(得分:0)

由于您的SQL查询是在没有任何过滤器的情况下获取用户,因此可以预期该查询的结果会有多个结果。基于此,我会说保留循环并将作业分配给$output ,除非您打算稍后使用它,然后保持原样

<!DOCTYPE html>
<html> 
    <body>
        <?php
        mysql_connect("localhost","name","")
        or die("Impossibile connettersi al server MySQL.\n"); 
        //select the db
        mysql_select_db("name")
        or die("Impossibile aprire il database.\n");
        //create the query
        $sql=mysql_query("select Ut_Email from utente"); 

        /*Il metodo "mysql_fetch_assoc" restituisce un array in base alla query 
        fatta e incrementa il dato*/
        while($row=mysql_fetch_assoc($sql)) 
        {
            //inseriamo tutto nella variabile output
            $output[]=$row; // OK if you plan to use $output later, otherwise unnecessary.

            /*print the json object*/
            print( json_encode( $row ) ); // Just print the $row testing
        }

        //close the connection
        mysql_close();
        ?>
    </body>
</html>