2016-10-27 4 views
0

私はHttpUrlConnectionを使用してアンドロイドアプリケーションからいくつかの情報をオンラインでPHPスクリプトに送信しようとしています。私はPHPの両方にとって非常に新しく、以前はHttpUrlConnectionを使用したことがないので、なぜこれが動作していないのか非常に固執しています。エラーもスローされません。Android HttpUrlConnectionが正しく動作しない

私のPHPスクリプトは

<?php 

//get connection details from the app and then connect to db 
$db_host = $_POST['db_host']; 
$db_user = $_POST['db_user']; 
$db_pass = $_POST['db_pass']; 
$db_name = $_POST['db_name']; 

$con = mysqli_connect($db_host, $db_user, $db_pass, $db_name); 

if (!$con) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 

$device_group_id = $_POST['device_group_id']; 

//create the new device group as a table in the database 
$create_table_query = "CREATE TABLE" . $device_group_id . "(
     device_id varchar(24), 
     device_alias varchar(24), 
     device_longitute int, 
     device_latititute int, 
     device_group_id varchar(24) 
)"; 

if (mysqli_query($con, $create_table_query)) { 
    echo "Table MyGuests created successfully"; 
} else { 
    echo "Error creating table: " . mysqli_error($con); 
} 

mysqli_close($con); 

?> 

あるとAsynctask方法doInBackground()は、あなたのコードで

@Override 
protected Object doInBackground(Object[] params) { 
    String result = ""; 
    try{ 
     //get values to pass to the PHP script 
     Pair<String, String> dbHost = new Pair<>("db_host", DbConnectionInfo.DB_HOST); 
     Pair<String, String> dbUser = new Pair<>("db_user", DbConnectionInfo.DB_USER); 
     Pair<String, String> dbPass = new Pair<>("db_pass", DbConnectionInfo.DB_PASS); 
     Pair<String, String> dbName = new Pair<>("db_host", DbConnectionInfo.DB_NAME); 
     Pair<String, String> deviceGroupId = new Pair<>("device_group_id", "new_device_group"); 

     URL url = new URL("http://tracme.net16.net/create_device_group.php"); 
     HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 

     // prepare request 
     urlConnection.setRequestMethod("POST"); 
     urlConnection.setDoInput(true); 
     urlConnection.setDoOutput(true); 
     urlConnection.setReadTimeout(10000); 
     urlConnection.setConnectTimeout(15000); 
     urlConnection.setChunkedStreamingMode(0); 

     //upload request 
     OutputStream outputStream = urlConnection.getOutputStream(); 
     OutputStreamWriter writer = new OutputStreamWriter(outputStream, "UTF-8"); 
     writer.write(dbHost.first + "=" + dbHost.second); 
     writer.write(dbUser.first + "=" + dbUser.second); 
     writer.write(dbPass.first + "=" + dbPass.second); 
     writer.write(dbName.first + "=" + dbName.second); 
     writer.write(deviceGroupId.first + "=" + deviceGroupId.second); 
     writer.close(); 
     outputStream.close(); 

     // read response 
     BufferedReader in = new BufferedReader(
       new InputStreamReader(urlConnection.getInputStream())); 

     String inputLine; 
     StringBuffer response = new StringBuffer(); 
     while ((inputLine = in.readLine()) != null) { response.append(inputLine); } 
     in.close(); 

     result = response.toString(); 

     // disconnect 
     urlConnection.disconnect(); 

    }catch(MalformedURLException e) { 
     Log.e("Malformed URL Exception", "Malformed URL Exception"); 
    }catch (IOException e) { 
     Log.e("IOException", "IOException"); 
    } 

    return result; 
} 
+0

エラーがなければ何も出力されません。だから、テーブルが作成されているかどうかを確認するためにdbをチェックしましたか?また、そのデバイスが返ってきたときに、そのテーブルの計画は何ですか?もちろん、テーブルを再作成することはできません。 – WEBjuju

+0

この例の文字列は単なる一時的な値です。各デバイスは、まだ作成されていない場合は、データベース内に一意のテーブルを作成します。このスクリプトは、デバイスに独自のテーブルがない場合にのみ実際に実行されます。これのチェックはjavaコードで実行されます。 – user2145312

+0

私は仕事中ですので、いつ帰宅するか確認する必要があります。私は答えがmによって提供されたと思います。 Waqas pervesはおそらくそれについての正しい考え方です! – user2145312

答えて

1

です:

$device_group_id = $_POST['device_group_id']; 

//create the new device group as a table in the database 
$create_table_query = "CREATE TABLE" . $device_group_id . "(
    device_id varchar(24), 
    device_alias varchar(24), 
    device_longitute int, 
    device_latititute int, 
    device_group_id varchar(24) 
)"; 
mysqli_close($con); 

あなただけvairable名前$create_table_queryを作成しています実際にクエリを実行するコードはありません。前にこのコードを追加してください。mysqli_close($con);

if ($con->query($create_table_query) === TRUE) { 
    echo "<br>Table created<br>"; 
} else { 
    echo "<br>Error creating table: " . $con->error. "<br>"; 
} 
+0

私はこのコードを追加しましたが、まだテーブルが作成されていません。とにかく私はphpMyAdminで見ることができません! – user2145312

+0

Webroswerからphpコードを実行して、動作しているかどうかを確認してください。 –

+0

ありがとうございました!私は実際にこれが主要な問題だと思うので、私はこの答えを受け入れましたが、私もPHPスクリプトのテーブル名の前にスペースを残していませんでした。 – user2145312

関連する問題