如何从mysql数据库中获取特定元素作为Json

时间:2015-11-10 21:09:10

标签: php android mysql json database

我试图从mysql数据库获取所有名称和姓氏列表,但仅用于用户访问服务的某个用户名和密码。 我尝试使用下面的代码,但似乎无法正常工作。实际上我回来的JSONArray是EMPTY。 这里是我的java代码和Php代码(在服务器上)。 如果我不按用户名和密码过滤,整个代码工作得很好,所以实际上我收到了列表。但是当我尝试按用户名和密码过滤时,JsonArray是Null。 请相信任何线索!

    public class ApiConnector {  
    public JSONArray GetAllCustomers(User user){
    String url = "http://giacomoci.co.uk/FetchallDataList.php";

    ArrayList<NameValuePair> dataToSend = new ArrayList<>();
    dataToSend.add(new BasicNameValuePair("username", user.username));
    dataToSend.add(new BasicNameValuePair("password", user.password));


    HttpParams httpRequestParams = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT);
    HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);

    DefaultHttpClient httpClient = new DefaultHttpClient(httpRequestParams);
    HttpPost post = new HttpPost(url);

    JSONArray jsonArray = null;

    try {


        //DefaultHttpClient httpClient = new DefaultHttpClient();
        //HttpGet httpGet = new HttpGet(url);
        post.setEntity(new UrlEncodedFormEntity(dataToSend));


        HttpResponse httpResponse = httpClient.execute(post);

        HttpEntity httpEntity = httpResponse.getEntity();

        if(httpEntity != null){

            try {

                String entityResponse = EntityUtils.toString(httpEntity);
                Log.e("Entity Response : ", entityResponse);

                jsonArray = new JSONArray(entityResponse);
            }catch (JSONException e){
                e.printStackTrace();
            }catch (IOException e){
                e.printStackTrace();
            }
        }
    } catch (ClientProtocolException e){
        e.printStackTrace();
    } catch (IOException e){
        e.printStackTrace();
    }

    return jsonArray;
}
    }

这是我的PHP代码

$username = $_POST["username"];
$password = $_POST["password"];


$statement = mysqli_prepare($con, "SELECT name, surname FROM Contacts WHERE username = ? AND password = ?");
mysqli_stmt_bind_param($statement, "ss", $username, $password);

$user[] = array();

while($row = mysqli_fetch_assoc($statement)){

    $user[] = $row;

}


echo json_encode($user);

mysqli_close($con);

所以如果我删除“Where username =?AND password =?”以下一行一切正常,但我得到所有用户名和密码的名字和姓氏,因为我不想要。这段代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

$username = $_POST["username"];
$password = $_POST["password"];

_POST替换为_GET

$username = $_GET["username"];
$password = $_GET["password"];