Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Android错误:值<;无法将java.lang.String类型的br转换为JSONObject_Php_Mysql_Pdo - Fatal编程技术网

Php Android错误:值<;无法将java.lang.String类型的br转换为JSONObject

Php Android错误:值<;无法将java.lang.String类型的br转换为JSONObject,php,mysql,pdo,Php,Mysql,Pdo,目前,我创建了一个具有登录功能的应用程序。为了从android连接到MySQL数据库,我使用PHP。当我使用MySQLi时,一切都正常。但是,当我转换为PDO时,错误将与问题的标题相同。有人知道问题出在哪里吗?下面是我的PHP代码: <?php require_once 'configPDO.php'; $response = array(); if(isTheseParametersAvailable(array('badgeid', 'pwd')

目前,我创建了一个具有登录功能的应用程序。为了从android连接到MySQL数据库,我使用PHP。当我使用MySQLi时,一切都正常。但是,当我转换为PDO时,错误将与问题的标题相同。有人知道问题出在哪里吗?下面是我的PHP代码:

<?php 

    require_once 'configPDO.php';

    $response = array();

        if(isTheseParametersAvailable(array('badgeid', 'pwd'))){

            $badgeid = $_POST['badgeid'];
            $pwd = $_POST['pwd']; 

            $stmt = $conn->prepare("SELECT badgeid, email, fullname, roles_id, team_id FROM users WHERE badgeid = :badgeid AND pwd = :pwd AND roles_id = 3");
            // $stmt->bind_param("ss",$badgeid, $pwd);

            $stmt->bindParam(':badgeid',$badgeid,PDO::PARAM_STR);
            $stmt->bindParam(':pwd',$pwd,PDO::PARAM_STR);
            $stmt->execute();

            //$stmt->store_result();

            if($stmt->rowCount() > 0){

                $stmt->bindParam($badgeid, $email, $fullname, $roles_id, $team_id);
                $stmt->fetch();

                $user = array(
                    'badgeid'=>$badgeid, 
                    'email'=>$email,
                    'fullname'=>$fullname,
                    'roles_id'=>$roles_id,
                    'team_id'=>$team_id
                );

                $response['error'] = false; 
                $response['message'] = 'Login successfull'; 
                $response['user'] = $user; 
            }else{
                $response['error'] = false; 
                $response['message'] = 'Invalid username or password';
            }
        }
    echo json_encode($response);

    function isTheseParametersAvailable($params){

        foreach($params as $param){
            if(!isset($_POST[$param])){
                return false; 
            }
        }
        return true; 
    }

第二个
bindParam()
(您应该阅读并理解该方法在
中的确切作用!),如果
条件是无意义的

更改此项:

if($stmt->rowCount()>0){
$stmt->bindParam($badgeid、$email、$fullname、$roles\u id、$team\u id);
$stmt->fetch();
$user=array(
“badgeid”=>$badgeid,
“email”=>$email,
“fullname”=>$fullname,
'roles\u id'=>$roles\u id,
“团队id”=>$team\u id
);
为此:

$result=$stmt->fetch(\PDO::fetch_ASSOC);//以数组形式获取结果
如果($结果){
//由于我们只获取要发回的字段,因此您可以直接将`$result`分配给`$response['user']`
$response['user']=$result;

PHP抛出了一个相关错误,您可能会在请求的原始响应中看到它!

这里似乎遇到了一个服务器错误。请查看原始响应(在转换为JSON之前)你从服务器返回。原始响应是什么意思?在你将其转换为JSON之前,你从服务器获得的原始响应。你的客户端(android)代码看起来如何?@CodyKL你想在这方面帮助我吗?我可以给androidcode@Dharman您能突出显示错误在哪里吗?fetch(\PDO::fetch\u ASSOC)?在fetch中是什么?
fetch()
默认使用
\PDO::FETCH_BOTH
,因为我们想通过字段名直接访问结果,所以我们将
\PDO::FETCH_ASSOC
设置为FETCH样式,这减少了数组,否则每个列值有2个条目,1个带有编号键,一个带有字段名。有关更多信息,请参阅我更新了代码上面,这里不需要
$stmt->rowCount()>0
,您可以直接检查
$result
。仍然有错误。我已经在这里更新了我的问题,请查看