不能在PHP端使用$_POST()将值存储在变量中,但可以很容易地将其存储在数据库中


Cannot store value on PHP side using $_POST() in a variable but can easily store it in database

我接受从android到php的价值观。我的android代码成功地将数据发送到php服务器,但我的php代码无法将$_POST()变量的值存储在另一个变量中。但是,当我直接将$_POST()放入插入查询时,该值会存储在数据库中。当我尝试var_dump($_POST())时,它显示为null。你能帮我如何在另一个变量中获得$_POST()值吗。

安卓代码

//send.java
package com.exg.zzz;
import java.io.IOException;
import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class send extends Activity {
EditText edit_uid,edit_pwd;
Button btn_login;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    edit_uid=(EditText) findViewById(R.id.edit_uid);
    edit_pwd=(EditText) findViewById(R.id.edit_pwd);
    btn_login=(Button) findViewById(R.id.btn_login);
    
    btn_login.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v){
            http_connection();
        }
    });
}
void http_connection()
{
    
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);      
    nameValuePairs.add(new BasicNameValuePair("Password",edit_pwd.getText().toString()));
    nameValuePairs.add(new BasicNameValuePair("UID",edit_uid.getText().toString()));
    HttpClient httpclient1 = new DefaultHttpClient();
    HttpPost httppost1 = new HttpPost("http://10.0.2.2/userins1.php");
    Log.v("localhost", "executed");
    try {
        httppost1.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                        httpclient1.execute(httppost1);
                        } catch (ClientProtocolException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    Toast.makeText(this, "Added", Toast.LENGTH_SHORT).show();
}
}

PHP代码

//userins1.php
<?php
$username = "root";
$password = "";
$hostname = "localhost";
//var_dump() display the data type and contents of the variable 
//but it displaying NULL for string data
var_dump($_POST[UID]);
//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
//select a database to work with
$selected = mysql_select_db("akshay",$dbhandle)
or die("Could not select examples");
//execute the SQL query and return records
//this qyery is successfully inserting the data
$sql="INSERT INTO login (uid, password) VALUES ('$_POST[UID]','$_POST[Password]')";
if (!mysql_query($sql,$dbhandle))
{
    die('Error: ' . mysql_error());
}
mysql_close($dbhandle);
?>

PHP中的数组键应该是字符串而不是常量。

  • $_POST[UID]变为$_POST["UID"]
  • $_POST[Password]变为$_POST["Password"]
  • 等等

此外,应该首先转义这些值,您需要研究SQL注入和mysql_real_eescape_string()。

如果问题仍然存在,请将var_dump($sql)放在$sql=...之后,或者与程序供应商联系。

$UID=$_POST[UID];
$Password = $_POST[Password];
$sql="INSERT INTO login (uid, password) VALUES ('$UID','$Password')";

最好这样做:

String Password =edit_pwd.getText().toString()));
String UID=edit_uid.getText().toString());
nameValuePairs.add(new BasicNameValuePair("Password",Password);
    nameValuePairs.add(new BasicNameValuePair("UID",UID);

如果还有任何问题问我!!!n一切顺利。