2

MySQL データベースにデータを挿入するアプリケーションを作成しています。PHP で SQL クエリを作成しました。Android アプリケーションに値を入力すると、ログ cat にエラーは表示されませんが、値がデータベースに保存されません。

PHPコードは次のとおりです。

<?php

$connect = mysqli_connect("localhost","root","","easyassigndroid");

if(mysqli_connect_errno($connect))
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else
{
    echo "success";
}

$username = isset($_POST['sPhone']) ? $_POST['sPhone'] : '';
$password = isset($_POST['sPassword']) ? $_POST['sPassword'] : '';

$query = mysqli_query($connect, "insert into users (sphone, spassword) values ('$username' ,'$password') ");

mysqli_close($connect);
?>

アンドロイドの部分は次のとおりです。

protected void onCreate(Bundle savedInstanceState) {

    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.register_lecturer);

    phonenum = (EditText) findViewById(R.id.id_phone);
    password = (EditText) findViewById(R.id.id_password);

    sPhone = phonenum.toString();
    sPassword = password.toString();

    registerLecturer=(Button)findViewById(R.id.lecturerregister);
    registerLecturer.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub

            httpclient = new DefaultHttpClient();
            httppost = new HttpPost("http://10.0.2.2/project/insert.php");

            try
            {
                nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("sphone", sPhone));
                nameValuePairs.add(new BasicNameValuePair("spassword", sPassword));

                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                response = httpclient.execute(httppost);
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
    });


}

私は Android と PHP の両方のコーディングの初心者です。私のコードのどこに問題があるか教えてもらえますか? プロジェクト作業のためにこれが必要です。

4

2 に答える 2

2

1 つのポイント: 使用する Android EditText から値を取得するには

x.getText().toString(); 

x は EditText オブジェクトですよね? それがまったく役立つことを願っています。

ただし、これは onClick() 内ではなく onCreate() で行われるため、次のように変更する必要があります。

nameValuePairs.add(new BasicNameValuePair("sphone", sPhone));

nameValuePairs.add(new BasicNameValuePair("sphone", phonenum.getText().toString()));

そして、もう一方についても同様です。乾杯。

于 2013-03-31T13:14:31.490 に答える
0

ご覧のとおり、「sPhone」と「sphone」をキーとして使用しています。両方とも同じ名前にすることをお勧めします。

nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("sphone", sPhone));
nameValuePairs.add(new BasicNameValuePair("spassword", sPassword));

そしてPHPで

$_POST['sphone']
$_POST['spassword']
于 2013-03-31T11:41:10.787 に答える