0

Web サービスを使用して、リモート SQL データベースから情報を保存/取得しようとしています。何らかの理由で、保存したい文字列ではなく、空の文字列が DB に挿入されています。

DB に deviceID のエントリが存在しない場合、文字列 deviceID と dateStamp を格納する必要があります。

DB テーブル名は Trial で、列は次のとおりです。デバイス ID | インストール日

注: データベースに接続して対話します。文字列の代わりに "" と "" を格納するだけです。

誰かがこれがなぜなのか教えてもらえますか? この種のことを試したのはこれが初めてなので、多くの問題を抱えており、見つけたスニペットを自分のニーズに合わせて変更しようとしています。

ここに私のJavaコードがあります:

import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
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.content.Intent;
import android.os.Bundle;
import android.provider.Settings.Secure;
import android.widget.Toast;

public class LicenseCheck extends Activity 
{
    String deviceID="",dateStamp="";       
    byte[] data;    
    HttpPost httppost;    
    StringBuffer buffer;    
    HttpResponse response;    
    HttpClient httpclient;    
    InputStream inputStream;    
    List<NameValuePair> nameValuePairs;

    public void onCreate(Bundle savedInstanceState)    
    {        
        super.onCreate(savedInstanceState); 
        final String android_id = Secure.getString(getApplicationContext().getContentResolver(),Secure.ANDROID_ID);        
        deviceID = android_id; 
        Date now = new Date();
        dateStamp = String.valueOf(now);

        try 
        {                    
            httpclient = new DefaultHttpClient();                    
            httppost = new HttpPost("http://99.57.234.12/Main.php");                    
            // Add your data                    
            nameValuePairs = new ArrayList<NameValuePair>(2);                   
            nameValuePairs.add(new BasicNameValuePair("device_id", deviceID));                    
            nameValuePairs.add(new BasicNameValuePair("install_date", dateStamp));                    
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));                     
            // Execute HTTP Post Request                    
            response = httpclient.execute(httppost);                    
            inputStream = response.getEntity().getContent();                     
            data = new byte[256];                     
            buffer = new StringBuffer();                    
            int len = 0;                    
            while (-1 != (len = inputStream.read(data)) )                    
            {                        
                buffer.append(new String(data, 0, len));                    
            }                     
            inputStream.close();                
            } catch (Exception e) {                    
                Toast.makeText(LicenseCheck.this, "error"+e.toString(), Toast.LENGTH_LONG).show();                
            }                
            if(buffer.charAt(0)=='Y')                
            {                    
                Toast.makeText(LicenseCheck.this, "working: " + buffer.toString() + ".", Toast.LENGTH_LONG).show();

                Move_to_next();
                LicenseCheck.this.finish();
            } else {                    
                Toast.makeText(LicenseCheck.this, "Trial Started", Toast.LENGTH_LONG).show();
                Move_to_next();
                LicenseCheck.this.finish();
            }                    
        }        
    public void Move_to_next()        
    {         
        startActivity(new Intent(this, MainMenu.class));        
    }
}

PHPは次のとおりです。

<?php 
    require_once('Connections.php'); 
    mysql_select_db($database_localhost,$localhost); 

    $device = $_POST['device_id'];
    $date = $_POST['install_date'];

    $query_search = "select * from trials where device_id = '".$device."'"; 
    $query_exec = mysql_query($query_search) or die(mysql_error()); 
    $rows = mysql_num_rows($query_exec);  



    if($rows --> 0) 
    { 
        echo "Y"; 
        $result = mysql_query("SELECT device_id,install_date FROM trials WHERE device_id = '".$device."'");
        if (!$result) {
            echo 'Could not run query: ' . mysql_error();
            exit;
        }
        $row = mysql_fetch_row($result);

        echo $row[0]; // device_id
        echo $row[1]; // install_date
        } else {
        echo "N";
        mysql_query("INSERT INTO trials (device_id, install_date) VALUES ( '".$device."', '".$date."')") or die (mysql_error()); 
    }
?>
4

1 に答える 1

2

あなたが投稿している:

nameValuePairs.add(new BasicNameValuePair("DeviceID", deviceID));
nameValuePairs.add(new BasicNameValuePair("DateStamp", dateStamp));

しかし、あなたは探しています:

$device = $_POST['device_id'];
$date = $_POST['install_date'];

PHPは、設定されていない$_POST内の変数を探しています。

于 2012-08-28T17:21:55.563 に答える