Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.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文件之前检索数据_Php_Android - Fatal编程技术网

在执行php文件之前检索数据

在执行php文件之前检索数据,php,android,Php,Android,如何在android中检索textView文本,以便.php文件在预执行php文件之前将其作为“$\u ID”的ID读取?因为在我的php文件中,我需要在执行json数组之前从我的android studio中检索一个ID,至少在我得到的错误中是这样认为的 我是编程新手,所以请在你还是编程新手的时候解释一下 这是我的php代码: <?php $host='localhost'; $user='root'; $password=''; $db='employee101'; $_id = $_

如何在android中检索textView文本,以便.php文件在预执行php文件之前将其作为“$\u ID”的ID读取?因为在我的php文件中,我需要在执行json数组之前从我的android studio中检索一个ID,至少在我得到的错误中是这样认为的

我是编程新手,所以请在你还是编程新手的时候解释一下

这是我的php代码:

<?php
$host='localhost';
$user='root';
$password='';
$db='employee101';
$_id = $_POST['id'];

$sql = "select * from employee_comments where id = $_id;";

$con = mysqli_connect($host,$user,$password,$db);

$result = mysqli_query($con, $sql);

$response = array();

while($row = mysqli_fetch_array($result)){

    array_push($response,array("id"=>$row[0],"comment"=>$row[1],"rating"=>$row[2]));

}

echo json_encode(array("server_respo"=>$response));

mysqli_close($con);




?>
PHP中的错误:

注意:C:\wamp64\www\json\u comments.php中的未定义索引:id 6注意:未定义变量:中的响应 C:\wamp64\www\json\u comments.php第25行注意:未定义 变量:C:\wamp64\www\json\u comments.php第27行的con警告: mysqli_close期望参数1为mysqli,在 第27行的C:\wamp64\www\json\u comments.php


您需要在条件中包装代码

if (!empty($_POST['id'])) {
  # place your code here
}
编辑


首先,u无法在asynctask内的textview中设置值,因为所有与ui相关的操作只能在ui线程上完成,请参见下文

基于Paresh:使用runUnuithRead方法。 如果您想在代码中读写文本,您可以执行以下操作:

public class MainActivity extends AppCompatActivity {

String Json_STRING;
TextView textView;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView=findViewById(R.id.text_view_id);
    String text=textview.getText();
    new BackgroundTask().execute(text);
     //new line


}




/*public void getJSON(View view) {

    new BackgroundTask().execute();

}*/

// change first param of asynctask to String to accept array of string params

class BackgroundTask extends AsyncTask<String, Void, String> {

    String json_url;
    String JSON_STRING;

    @Override
    protected void onPreExecute() {

        json_url = "http://10.0.2.2/json_comments.php";
    }

    @Override
    protected String doInBackground(String... params) {
        try {
String param=params[0]; // you can access text of textview from here and pass it to your url like "json_url?id=param"
            URL url = new URL(json_url);
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            StringBuilder stringBuilder = new StringBuilder();
            while ((JSON_STRING = bufferedReader.readLine()) != null) {

                stringBuilder.append(JSON_STRING + "\n");
            }

            bufferedReader.close();
            inputStream.close();
            httpURLConnection.disconnect();
            return stringBuilder.toString().trim();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(String result) {
        runOnUiThread(new Runnable() {
           @Override
           public void run() {
              textView.setText(result);       
           }
        });
    }

}

php android

在php文件中,您可以从$u POST['ID']获取ID。所以,在Java文件中,HttpURLConnection HttpURLConnection需要使用方法POST,并将数据ID发送到php文件

import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.w3c.dom.Text;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;

public class MainActivity extends AppCompatActivity {

    String Json_STRING;
    TextView textView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new BackgroundTask().execute();
        //new line


    }




    /*public void getJSON(View view) {

        new BackgroundTask().execute();

    }*/


    class BackgroundTask extends AsyncTask<Void, Void, String> {

        String json_url;
        String JSON_STRING;

        @Override
        protected void onPreExecute() {

            json_url = "http://10.0.2.2/json_comments.php";
        }

        @Override
        protected String doInBackground(Void... params) {
            try {

                String urlParameters  = "id=your_id";
                byte[] postData       = urlParameters.getBytes( StandardCharsets.UTF_8 );
                int    postDataLength = postData.length;
                String request        = json_url;;
                URL    url            = new URL( request );
                HttpURLConnection conn= (HttpURLConnection) url.openConnection();
                conn.setDoOutput( true );
                conn.setInstanceFollowRedirects( false );
                conn.setRequestMethod( "POST" );
                conn.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded");
                conn.setRequestProperty( "charset", "utf-8");
                conn.setRequestProperty( "Content-Length", Integer.toString( postDataLength ));
                conn.setUseCaches( false );
                try( DataOutputStream wr = new DataOutputStream( conn.getOutputStream())) {
                    wr.write( postData );
                }

                if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
                    is = urlConn.getInputStream();
                    BufferedReader in = new BufferedReader(new InputStreamReader(is));
                    StringBuilder stringBuilder = new StringBuilder();
                    while ((inputLine = in.readLine()) != null)
                        stringBuilder.append(inputLine + "\n");
                    in.close();
                    return stringBuilder.toString().trim();



                    //Your code read data return here ...

                } else {
                    is = urlConn.getErrorStream();
                }

                return null;


            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onProgressUpdate(Void... values) {
            super.onProgressUpdate(values);
        }

        @Override
        protected void onPostExecute(String result) {
            TextView textView = (TextView)findViewById(R.id.textView2);
            textView.setText(result);
            Json_STRING = result;
        }

    }

我应该把那个条件放在哪里,你们能告诉我吗?更新答案,保持线路的其余部分不变。它将不会执行你的代码,直到它有idI仍然有相同的错误,未定义的变量thingy与id:我如何做rununui thingy,你能指导我如何做,我对编程非常陌生,只需在postExecute中使用上述代码,因为它将超出android的主UI线程,然后可以访问此线程上的所有元素,并且所有视图都位于此线程上。我在您的oncreate textView=findviewbydr.id.text\u view\u id中遇到错误;String text=textview.getText;。它表示不兼容的类型字符串text=textview.getText.toString;并确保您将xml中textview的id设置为与java文件相同,并且变量'result'是从内部类中访问的,需要声明为finalupdated my answer,只需将代码替换为file@RizalJulianBlanco,将其置于受保护字符串doInBackgroundVoid。。。params,替换try-catch块。
if (!empty($_POST['id'])) {
  # place your code here
}
<?php 
$host='localhost';
$user='root';
$password='';
$db='employee101';

if (!empty($_POST['id'])) {
    $_id = $_POST['id'];

    $sql = "select * from employee_comments where id = $_id;";

    $con = mysqli_connect($host,$user,$password,$db);

    $result = mysqli_query($con, $sql);

    $response = array();

    while($row = mysqli_fetch_array($result)){

        array_push($response,array("id"=>$row[0],"comment"=>$row[1],"rating"=>$row[2]));

    }

echo json_encode(array("server_respo"=>$response));

mysqli_close($con);

}
?>
public class MainActivity extends AppCompatActivity {

String Json_STRING;
TextView textView;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView=findViewById(R.id.text_view_id);
    String text=textview.getText();
    new BackgroundTask().execute(text);
     //new line


}




/*public void getJSON(View view) {

    new BackgroundTask().execute();

}*/

// change first param of asynctask to String to accept array of string params

class BackgroundTask extends AsyncTask<String, Void, String> {

    String json_url;
    String JSON_STRING;

    @Override
    protected void onPreExecute() {

        json_url = "http://10.0.2.2/json_comments.php";
    }

    @Override
    protected String doInBackground(String... params) {
        try {
String param=params[0]; // you can access text of textview from here and pass it to your url like "json_url?id=param"
            URL url = new URL(json_url);
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            StringBuilder stringBuilder = new StringBuilder();
            while ((JSON_STRING = bufferedReader.readLine()) != null) {

                stringBuilder.append(JSON_STRING + "\n");
            }

            bufferedReader.close();
            inputStream.close();
            httpURLConnection.disconnect();
            return stringBuilder.toString().trim();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(String result) {
        runOnUiThread(new Runnable() {
           @Override
           public void run() {
              textView.setText(result);       
           }
        });
    }

}
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.w3c.dom.Text;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;

public class MainActivity extends AppCompatActivity {

    String Json_STRING;
    TextView textView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new BackgroundTask().execute();
        //new line


    }




    /*public void getJSON(View view) {

        new BackgroundTask().execute();

    }*/


    class BackgroundTask extends AsyncTask<Void, Void, String> {

        String json_url;
        String JSON_STRING;

        @Override
        protected void onPreExecute() {

            json_url = "http://10.0.2.2/json_comments.php";
        }

        @Override
        protected String doInBackground(Void... params) {
            try {

                String urlParameters  = "id=your_id";
                byte[] postData       = urlParameters.getBytes( StandardCharsets.UTF_8 );
                int    postDataLength = postData.length;
                String request        = json_url;;
                URL    url            = new URL( request );
                HttpURLConnection conn= (HttpURLConnection) url.openConnection();
                conn.setDoOutput( true );
                conn.setInstanceFollowRedirects( false );
                conn.setRequestMethod( "POST" );
                conn.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded");
                conn.setRequestProperty( "charset", "utf-8");
                conn.setRequestProperty( "Content-Length", Integer.toString( postDataLength ));
                conn.setUseCaches( false );
                try( DataOutputStream wr = new DataOutputStream( conn.getOutputStream())) {
                    wr.write( postData );
                }

                if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
                    is = urlConn.getInputStream();
                    BufferedReader in = new BufferedReader(new InputStreamReader(is));
                    StringBuilder stringBuilder = new StringBuilder();
                    while ((inputLine = in.readLine()) != null)
                        stringBuilder.append(inputLine + "\n");
                    in.close();
                    return stringBuilder.toString().trim();



                    //Your code read data return here ...

                } else {
                    is = urlConn.getErrorStream();
                }

                return null;


            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onProgressUpdate(Void... values) {
            super.onProgressUpdate(values);
        }

        @Override
        protected void onPostExecute(String result) {
            TextView textView = (TextView)findViewById(R.id.textView2);
            textView.setText(result);
            Json_STRING = result;
        }

    }