由sql行组成的PHP数组,用于json_编码

由sql行组成的PHP数组,用于json_编码,php,mysql,arrays,json,mysqli,Php,Mysql,Arrays,Json,Mysqli,我在将sql查询生成的php数组转换为json_encode的JSONObject时遇到问题。我用谷歌截击来实现连接 当涉及到单行结果时,我没有收到任何问题,但当有超过1行时,我的应用程序中出现错误,这意味着我没有真正收到JSONObject 这是我的php代码 if (mysql_num_rows($result) > 0) { $rutina = array(); while($row = mysql_fetch_assoc($result)) { $rutina[] = $

我在将sql查询生成的php数组转换为json_encode的JSONObject时遇到问题。我用谷歌截击来实现连接

当涉及到单行结果时,我没有收到任何问题,但当有超过1行时,我的应用程序中出现错误,这意味着我没有真正收到JSONObject

这是我的php代码

if (mysql_num_rows($result) > 0) {

$rutina = array();
while($row = mysql_fetch_assoc($result))
{
    $rutina[] = $row;
}}  
我这样还它

echo json_encode($rutina);
我知道mysql已经被弃用了,我很快就要迁移到mysql了

将sql行数组转换为JSONObject的正确方法是什么

编辑:

下面是我等待JSONObject的android代码:

JsonObjectRequest solicitudRutina = new JsonObjectRequest(
            Request.Method.POST, //metodo de solicitud
            linkrutina, //url, se cambia en las variables
            map,//el objeto JSON que contiene el usuario que intentaremos descargar
            new Response.Listener<JSONObject>() { //el listener de la respuesta
                @Override
                public void onResponse(JSONObject response) { // si existe respuesta aca se cacha,

                    String temp= response.optString("sinexito");//sinexito tiene el mensaje de error de no encontrar el usuario

                    if(temp.equals("")){//si la rutina existe, iniciamos descarga

                        rutinaview.setText(response.toString());
                        //obtenerRutina(response);
                    }
                    else{
                        Context context = getApplicationContext();
                        CharSequence text = "Problema al descargar la rutina, posiblemente no exita una asignada";
                        int duration = Toast.LENGTH_LONG;

                        Toast toast = Toast.makeText(context, text, duration);
                        toast.show();
                    }

                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            {
                Context context = getApplicationContext();
                CharSequence text = "Error con la base de datos.";
                int duration = Toast.LENGTH_LONG;

                Toast toast = Toast.makeText(context, text, duration);
                toast.show();
            }
        }
    });
    VolleyApplication.getsInstance().getmRequestQueue().add(solicitudRutina);
JsonObjectRequest requestudrutina=新的JsonObjectRequest(
Request.Method.POST,//metodo de requestud
linkrutina,//url,东南坎比亚
映射,//el objeto JSON que contiene el usuario que intentaremos descargar
新的Response.Listener(){//el Listener de la respuesta
@凌驾
公共无效响应(JSONObject响应){//si existe respuesta aca se cacha,
String temp=response.optString(“sinexito”);//sinexito tiene el mensaje de error de no encontrar el usuario
如果(温度等于(“”){//si la rutina存在,则说明
rutinaview.setText(response.toString());
//obtenerRutina(应答);
}
否则{
Context=getApplicationContext();
CharSequence text=“问题描述,可能没有出口”;
int duration=Toast.LENGTH\u LONG;
Toast Toast=Toast.makeText(上下文、文本、持续时间);
toast.show();
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
{
Context=getApplicationContext();
CharSequence text=“基准数据出错。”;
int duration=Toast.LENGTH\u LONG;
Toast Toast=Toast.makeText(上下文、文本、持续时间);
toast.show();
}
}
});
截击应用程序.getsInstance().getmRequestQueue().add(requestudrutina);

我收到了关于响应错误的祝酒词。我想这是因为我没有得到一个JSONObject?它只适用于1行。

通常我使用类似的方法来成功解析JSON对象,需要非常清楚地说明页面标题必须将JSON作为MIME类型,以便任何其他代码都可以轻松识别它

<?php
header('Content-Type:application/json');
//Your Database query here...
$output = mysqli_fetch_all($rutina,MYSQLI_ASSOC);
echo json_encode($output);

显示json编码数据的其他代码在哪里?这是什么错误?您的代码将生成一个json数组(可能是一个对象文本数组)
[{…},{…},…},]
。如果您想要一个json对象作为最顶层的元素,那么您必须使用不同于0,1,2,3,。。。为了$rutina@aldrin27代码在一个android应用程序中,该应用程序请求一个JSONObject,但我会编辑我的初始任务,请稍候。当您使用json_encode时。它将返回一个json字符串,所以当它通过android时,将json转换成一个对象