Sql查询未在php中生成输出

Sql查询未在php中生成输出,php,json,Php,Json,我正在创建一个从PHP端接收数据的android项目。但是PHP代码没有给出任何结果 我编写了这段php代码,并检查了它是否转到else循环,以及是否有人找到了鞋子。但是我的SQL查询手动以XAMPP SQL提供输出 if($_SERVER['REQUEST_METHOD']=='POST'){ include_once "Dbconnect.php"; $phone= $_POST['phn']; $sql="Select peoples.

我正在创建一个从PHP端接收数据的android项目。但是PHP代码没有给出任何结果

我编写了这段php代码,并检查了它是否转到else循环,以及是否有人找到了鞋子。但是我的SQL查询手动以XAMPP SQL提供输出

if($_SERVER['REQUEST_METHOD']=='POST'){
    include_once "Dbconnect.php"; 
    $phone= $_POST['phn'];

    $sql="Select 
            peoples.name as pname,
            peoples.address as addr,
            peoples.phone as phone,
            peoples.nomineephone as nphone,
            peoples.idproofnumber as idproof,
            camp.campid as cid,
            camp.Managername as mgrname,
            camp.managerno as mgrphone,
            camp.name as cname,
            camp.Location as loc 
        from 
            peoples 
        inner join camp 
            on peoples.campid=camp.campid 
        where 
            peoples.phone='$phone'";

    $result = $conn->query($sql);

    if ($result->num_rows >0) {
        while($row[] = $result->fetch_assoc()) {
            $tem = $row;
            $json = json_encode($tem);
         }
    } else {
       echo 'No people data found';
    }

    echo $json;
}

我试着在PHP端回显电话号码,我从android获取了电话号码,数据在DB中与该电话号码一起可用。但是这个代码没有给出数据。我希望在android中以json的形式输出查询

最后的代码获取数据并输出,这可能是原因所在。当您从
fetch_assoc()
获取结果时,最后一次迭代将返回
false
,但当您将其分配给
$row[]
时,它将向数据添加
false

在这段代码中,循环只是建立一个行列表,然后在输出上对它们进行
json\u编码()。它还首先创建空数组以确保它已初始化

它还返回在JSON中找不到的数据,而不仅仅是
echo
ing

$rows = [];
if ($result->num_rows >0) {
    while($row = $result->fetch_assoc()) {
        $rows[] = $row;
     }
} else {
   $rows = [ 'error' => 'No data found' ];
}

echo json_encode($rows);
如果您只希望返回1行,那么可以使用

if ($result->num_rows >0) {
    $row = $result->fetch_assoc();
} else {
   $row = [ 'error' => 'No data found' ];
}

echo json_encode($row);

也许这会有帮助。基本上只是重写你分享的最后几行。我认为这是不言自明的。我的抱怨是你应该能够更好地解决这个问题。进行调试。问一些具体的问题,或者回答你自己的问题

$result = $conn->query($sql);
if ($result === false) {
  die('query error');
}

$row = $result->fetch_array(MYSQLI_ASSOC);
if (empty($row)) {
  die('no results');
}

//your code suggests you expect one result. So unless phone number is a unique index in database you should handle that better here.

$jsonOut = json_encode($row);

header('Content-Type: application/json');
echo $jsonOut;

您是否尝试过调试代码(可能是
var\u dump($result)
?您是否检查了错误日志?您还需要更好地转义输入。警告:您对SQL注入非常开放。请使用参数化的预处理语句,而不是像那样将完全未转义的用户数据直接注入查询中。1.首先检查其内部
if($\u服务器['REQUEST\u METHOD']='POST')){
condition?2.确保
phone
具有值3.echo
$sql
并尝试在phpmyadmin中执行它,并确保DBchange$json=json\u encode($tem);to$json=json\u encode($row)中存在
phone
编号;break;然后查看或
选择*FROM peoples WHERE peoples.phone='+1-555-867-5309'
?带有硬编码的数字。就像验证东西是否正常工作,然后一步一步建立在它的基础上一样?哦。如果电话号码是字符串,那么它将是
。类似于电话的“电话字符串”
。结果不会给出任何结果。我确信数据在那里因为我使用相同的电话号码登录数据库,所以只会再次进入else循环。如果记录中没有匹配项,您可以尝试将
内部连接
更改为
左连接