Php JSON中出现此错误的原因可能是什么?

Php JSON中出现此错误的原因可能是什么?,php,android,json,Php,Android,Json,我正在一个android应用程序中实现一个基本注册系统,该应用程序通过wampserver和PHP API连接到SQL数据库。。。每次我执行注册过程时,用户都会被保存在数据库中,但当我尝试获取该过程的JSON响应时,该响应将携带注册用户信息存储在与我的应用程序关联的SQLite数据库中。。。我得到的错误是:字符串不能转换为json对象 这是android端,我调用PHP代码执行注册并接收json响应 private void registerUser(final String name, fin

我正在一个android应用程序中实现一个基本注册系统,该应用程序通过wampserver和PHP API连接到SQL数据库。。。每次我执行注册过程时,用户都会被保存在数据库中,但当我尝试获取该过程的JSON响应时,该响应将携带注册用户信息存储在与我的应用程序关联的SQLite数据库中。。。我得到的错误是:字符串不能转换为json对象

这是android端,我调用PHP代码执行注册并接收json响应

private void registerUser(final String name, final String email,
        final String password, final String latitude,
        final String longitude, final String userType) {
    // Tag used to cancel the request
    String tag_string_req = "req_register";

    pDialog.setMessage("Registering ...");
    showDialog();

    StringRequest strReq = new StringRequest(Method.POST,
            AppConfig.URL_REGISTER, new Response.Listener<String>() {

                @Override
                public void onResponse(String response) {
                    hideDialog();

                    try {
                        Log.i("tagconvertstr", "[" + response.toString()
                                + "]");


                        JSONObject jObj = new JSONObject(response);
                        boolean error = jObj.getBoolean("error");
                        if (!error) {
                            // User successfully stored in MySQL
                            // Now store the user in sqlite
                            String uid = jObj.getString("uid");

                            JSONObject user = jObj.getJSONObject("user");
                            String name = user.getString("name");
                            String email = user.getString("email");
                            String latitude = user.getString("latitude");
                            String longitude = user.getString("longitude");
                            String userType = user.getString("userType");
                            String service = user.getString("service");
                            String rate = user.getString("rate");
                            String rated_clients = user
                                    .getString("rated_clients");
                            String servicesTag = user
                                    .getString("servicesTag");
                            String created_at = user
                                    .getString("created_at");

                            // Inserting row in users table
                            db.addUser(name, email, latitude, longitude,
                                    userType, service, rate, rated_clients,
                                    servicesTag, uid, created_at);

                            Toast.makeText(
                                    getApplicationContext(),
                                    "User successfully registered. Try login now!",
                                    Toast.LENGTH_LONG).show();

                            // Launch login activity
                            checkLogin(email, password);

                        } else {
                            Log.d("heeeeeeeeeeeeeeeey", "error here");

                            // Error occurred in registration. Get the error
                            // message
                            String errorMsg = jObj.getString("error_msg");
                            toast.makeDialog("Error in registering "
                                    + errorMsg + "kk",
                                    getApplicationContext());
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    loginLayout.setVisibility(View.GONE);
                    registerLayout.setVisibility(View.GONE);
                    noConnectionLayout.setVisibility(View.VISIBLE);
                    tag = "register";
                    hideDialog();
                }
            }) {

        @Override
        protected Map<String, String> getParams() {
            // Posting params to register url
            Map<String, String> params = new HashMap<String, String>();
            params.put("name", name);
            params.put("email", email);
            params.put("password", password);
            params.put("latitude", latitude);
            params.put("longitude", longitude);
            params.put("userType", userType);

            return params;
        }

    };
    strReq.setRetryPolicy(new DefaultRetryPolicy(0,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
private void registerUser(最终字符串名称、最终字符串电子邮件、,
最终字符串密码,最终字符串纬度,
最终字符串经度,最终字符串用户类型){
//用于取消请求的标记
String tag_String_req=“req_register”;
pDialog.setMessage(“注册…”);
showDialog();
StringRequest strReq=新的StringRequest(Method.POST,
AppConfig.URL\u寄存器,新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
hideDialog();
试一试{
Log.i(“tagconvertstr”,“[”+response.toString()
+ "]");
JSONObject jObj=新的JSONObject(响应);
布尔错误=jObj.getBoolean(“错误”);
如果(!错误){
//用户成功存储在MySQL中
//现在将用户存储在sqlite中
stringuid=jObj.getString(“uid”);
JSONObject user=jObj.getJSONObject(“用户”);
字符串名称=user.getString(“名称”);
String email=user.getString(“电子邮件”);
字符串纬度=user.getString(“纬度”);
字符串经度=user.getString(“经度”);
字符串userType=user.getString(“userType”);
字符串服务=user.getString(“服务”);
字符串速率=user.getString(“速率”);
字符串额定值_clients=用户
.getString(“评级客户”);
字符串servicesTag=user
.getString(“servicesTag”);
在=用户处创建的字符串
.getString(“创建于”);
//在用户表中插入行
db.addUser(姓名、电子邮件、纬度、经度、,
用户类型、服务、费率、额定用户,
servicesTag,uid,创建于);
Toast.makeText(
getApplicationContext(),
“用户已成功注册。请立即尝试登录!”,
Toast.LENGTH_LONG).show();
//启动登录活动
检查登录(电子邮件、密码);
}否则{
Log.d(“heeeeeeey”,“此处出错”);
//注册时出错。获取错误信息
//信息
String errorMsg=jObj.getString(“error_msg”);
toast.makeDialog(“注册时出错”
+errorMsg+“kk”,
getApplicationContext());
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
loginLayout.setVisibility(View.GONE);
registerLayout.setVisibility(View.GONE);
noConnectionLayout.setVisibility(View.VISIBLE);
tag=“寄存器”;
hideDialog();
}
}) {
@凌驾
受保护的映射getParams(){
//发布参数以注册url
Map params=新的HashMap();
参数put(“名称”,名称);
参数put(“电子邮件”,电子邮件);
参数put(“密码”,密码);
参数put(“纬度”,纬度);
参数put(“经度”,经度);
参数put(“userType”,userType);
返回参数;
}
};
strReq.setRetryPolicy(新的DefaultRetryPolicy(0,
DefaultRetryPolicy.DEFAULT\u最大重试次数,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
//将请求添加到请求队列
AppController.getInstance().addToRequestQueue(streq,标记字符串请求);
}
我在以下行中得到错误:JSONObject jObj=newjsonobject(response)

这是注册过程的PHP代码:

<?php

ini_set ( 'display_errors', 'On' );

require_once 'include/DB_Functions.php';

$db = new DB_Functions ();

// json response array

$response = array (
"error" => FALSE 

`);

if (isset ( $_POST ['name'] ) && isset ( $_POST ['email'] ) && isset ( $_POST ['password'] ) && isset ( $_POST ['latitude'] ) && isset ( $_POST ['longitude'] ) && isset ( $_POST ['userType'] )) {



// receiving the post params
$name = $_POST ['name'];
$email = $_POST ['email'];
$password = $_POST ['password'];
$latitude = $_POST ['latitude'];
$longitude = $_POST ['longitude'];
$userType = $_POST ['userType'];

// check if user is already existed with the same email
if ($db->isUserExisted ( $email )) {
    // user already existed
    $response ["error"] = TRUE;
    $response ["error_msg"] = "User already existed with " . $email;
    echo json_encode ( $response );
} else {
    // create a new user
    $user = $db->storeUser ( $name, $email, $password, $latitude, $longitude, $userType );

    if ($user) {
        // user stored successfully
        $response ["error"] = FALSE;
        $response ["uid"] = $user ["unique_id"];
        $response ["user"] ["name"] = $user ["name"];
        $response ["user"] ["email"] = $user ["email"];
        $response ["user"] ["latitude"] = $user ["latitude"];
        $response ["user"] ["longitude"] = $user ["longitude"];
        $response ["user"] ["userType"] = $user ["userType"];
        $response ["user"] ["service"] = $user ["service"];
        $response ["user"] ["rate"] = $user ["rate"];
        $response ["user"] ["rated_clients"] = $user ["rated_clients"];
        $response ["user"] ["servicesTag"] = $user ["servicesTag"];
        $response ["user"] ["created_at"] = $user ["created_at"];
        $response ["user"] ["updated_at"] = $user ["updated_at"];
        echo json_encode ( $response );
    } else {

        // user failed to store
        $response ["error"] = TRUE;
        $response ["error_msg"] = "Unknown error occurred in registration!";
        echo json_encode ( $response );
    }
}
} else {
$response ["error"] = TRUE;
$response ["error_msg"] = "Required parameters (name, email or password) is missing!";
echo json_encode ( $response );
}
?>

这是isUserExicted和storeUser函数:

public function isUserExisted($email) {
    $stmt = $this->conn->prepare ( "SELECT email from users WHERE email = ?" );

    $stmt->bind_param ( "s", $email );

    $stmt->execute ();

    $stmt->store_result ();

    if ($stmt->num_rows > 0) {
        // user existed
        $stmt->close ();
        return true;
    } else {
        // user not existed
        $stmt->close ();
        return false;
    }
}


public function storeUser($name, $email, $password, $latitude, $longitude, $userType) {
    $uuid = uniqid ( '', true );
    $hash = $this->hashSSHA ( $password );
    $encrypted_password = $hash ["encrypted"]; // encrypted password
    $salt = $hash ["salt"]; // salt

    $service = "none";
    $rate = "none";
    $rated_clients = "none";
    $servicesTag = "none";

    $stmt = $this->conn->prepare ( "INSERT INTO users(unique_id, name, email, encrypted_password, latitude, longitude, userType, salt, service, rate, rated_clients, servicesTag, created_at) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())" );
    $stmt->bind_param ( "ssssssssssss", $uuid, $name, $email, $encrypted_password, $latitude, $longitude, $userType, $salt, $service, $rate, $rated_clients, $servicesTag );
    $result = $stmt->execute ();
    $stmt->close ();
    var_dump ( $result );
    // check for successful store
    if ($result) {

        $stmt = $this->conn->prepare ( "SELECT * FROM users WHERE email = ?" );

        $stmt->bind_param ( "s", $email );

        $stmt->execute ();
        $user = $stmt->get_result ()->fetch_assoc ();
        $stmt->close ();
        var_dump ( $user );
        echo '</pre>';

        return $user;
    } else {

        return null;
    }
}
公共函数isUserExisted($email){
$stmt=$this->conn->prepare(“从电子邮件=?”的用户选择电子邮件”);
$stmt->bind_参数(“s”,$email);
$stmt->execute();
$stmt->store_result();
如果($stmt->num_rows>0){
//用户存在
$stmt->close();
返回true;
}否则{
//用户不存在
$stmt->close();
返回false;
}
}
公共函数storeUser($name、$email、$password、$latitude、$longitude、$userType){
$uuid=uniqid(“”,true);
$hash=$this->hashSSHA($password);
$encrypted_password=$hash[“encrypted”];//加密密码
$salt=$hash[“salt”];//salt
$service=“无”;
$rate=“无”;
$U客户
Options -Indexes

# suppress PHP errors from displaying in the browser
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off

# log PHP errors to a file
php_flag log_errors on
php_value error_reporting 32767
php_value error_log "./error_log.txt"
<?php
header('Content-type: application/json');
$json = file_get_contents('php://input'); // input json
// ...
$js_result = json_encode(array("error" => "unknown_action")); // result
echo $js_result;