php返回空的JSON数组


php returns empty JSON array

我为城镇名称"Auckland"answers"Hamilton"创建了一个数组,但php的响应总是空的,知道吗?

更新:经过调试,我发现问题出在php查询中"where town='$town'",一旦我删除了这行,其余的都很好。但我仍然不明白为什么:<

javascript:

 var _addNewTowntoList = function(){
     if (_request.readyState == 4) {
            if (_request.status == 200) {
                var data = JSON.parse(_request.responseText);
                if(data.length == 0){
                    alert("No such town");
                    return;
                }
                 var t = data[0].town;
                 var o = data[0].outlook;
                 var min = data[0].min_temp;
                 var max = data[0].max_temp;    
                 var witem = new WLine(t,o,min,max);
                 console.log(t+" "+o+" "+min+" "+max);
                 _list.push(witem);
             }
         }
 }

这是php

   $town = $POST_['town'];
   $query = "Select * From weather WHERE town = '$town'";
   $result = mysqli_query($conn, $query);
   //create array for data
   $data = array();
   while($row = mysqli_fetch_assoc($result))
   {
        $data[] = $row;
   }
   echo json_encode($data);

更改此

$town = $POST_['town'];
>  $query = "Select * From weather WHERE town = '$town'";

 $town = $_POST['town'];
 $query = "Select * From weather WHERE town = '".$town."'";

记住正确转义查询字符串

$town = mysqli_real_escape_strin($conn, $_POST['town']);

因为否则您的脚本将被打开以进行SQL注入攻击

除了$_POST的正确名称之外,这里要提到的另一件事是,您可以使用mysqli_fetch_all函数一次获取所有结果,从而避免循环。例如

echo json_encode(mysqli_fetch_all($result, MYSQLI_ASSOC));