在执行php文件之前检索数据
如何在android中检索textView文本,以便.php文件在预执行php文件之前将其作为“$\u ID”的ID读取?因为在我的php文件中,我需要在执行json数组之前从我的android studio中检索一个ID,至少在我得到的错误中是这样认为的 我是编程新手,所以请在你还是编程新手的时候解释一下 这是我的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 = $_
<?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;
}
}