2013-09-12 5 views
1

Я пытаюсь вставить несколько (1-50) записей из приложения Android во внешнюю базу данных Mysql. Я отлично получил PHP-скрипт для работы с одиночными запросами INSERT. Но до сих пор я не могу сделать эту работу целым массивом записей, скорее всего из-за моего ограниченного понимания PHP.INSERT несколько записей с Android -> PHP -> MYSQL

Android код:

List<NameValuePair> upload_array = new ArrayList<NameValuePair>(); 
upload_array.add(new BasicNameValuePair("mFirstname[0]", "FirstName 1")); 
upload_array.add(new BasicNameValuePair("mFirstname[1]", "FirstName 2")); 
upload_array.add(new BasicNameValuePair("mLastname[0]", "LastName 1")); 
upload_array.add(new BasicNameValuePair("mLastname[1]", "LastName 2")); 
upload_array.add(new BasicNameValuePair("mNickname[0]", "NickName 1")); 
upload_array.add(new BasicNameValuePair("mNickname[1]", "NickName 2")); 

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://url/script.php"); 
HttpResponse response = null; 
try { 
    httppost.setEntity(new UrlEncodedFormEntity(upload_array)); 
    response = httpclient.execute(httppost); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

И в PHP:

<?php 

$connect = mysqli_connect("***","***","***", "***"); 

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

$query = mysqli_prepare("INSERT INTO `namelist` (`firstname`,`lastname`,`nickname`) 
    VALUES(?,?,?)"); 

$mFirstname = $_POST['mFirstname']; 
$mLastname = $_POST['mLastname']; 
$mNickname = $_POST['mNickname']; 

foreach($mFirstname as $key as $key => $value) { 
    $query->bind_param('sss',$value["mFirstname"],$value["mLastname"],$value["mNickname"]; 
    $query->execute(); 
} 

mysqli_close($connect); 
?> 

ли ошибка происходит в Android части кода уже или это PHP скрипт просто не читать данные, которые я послал правильно ? Любое понимание было бы очень желанным.

ответ

1

Хорошо, я сделал эту работу с помощью массива JSON. В случае, если кто имеет использовать для этого, вот как это идет:

Android, создавать JSON строки:

//Create JSON string start 
String json_string ="{\"upload_fishes\":["; 

//Repeat and loop this until all objects are added (and add try+catch) 
JSONObject obj_new = new JSONObject(); 
obj_new.put("fish_id", your_looped_string_1[i]); 
obj_new.put("fish_lat", your_looped_string_2[i]); 
obj_new.put("fish_lon", your_looped_string_3[i]); 
json_string = json_string + obj_new.toString() + ","; 

//Close JSON string 
json_string = json_string.substring(0, json_string.length()-1); 
json_string += "]}"; 

Android отправить данные в PHP (добавить попытку + улов):

HttpParams httpParams = new BasicHttpParams(); 
HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC); 
HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC); 
HttpClient client = new DefaultHttpClient(httpParams); 

String url = "http://yourserver.com/script.php"; 

HttpPost request = new HttpPost(url); 
request.setEntity(new ByteArrayEntity(json_string.getBytes("UTF8"))); 
request.setHeader("json", json_string); 
HttpResponse response = client.execute(request); 

Log.d("FISHY", response.getStatusLine().toString()); 

PHP сценарий:

<?php 

//CONNECT TO THE DATABASE 
$DB_HOST = 'yourhost.com'; 
$DB_USER = 'user'; 
$DB_PASS = 'password'; 
$DB_NAME = "db_name"; 

$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); 

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


    $postdata = file_get_contents("php://input"); 
    $data = json_decode($postdata, true); 

    if (is_array($data['upload_fishes'])) { 
     foreach ($data['upload_fishes'] as $record) { 
     $fid = $record['fish_id']; 
     $flat = $record['fish_lat']; 
    $flon = $record['fish_lon']; 

     mysqli_query($mysqli,"INSERT INTO `fishes`(`fish_type_id`, `fish_lat`, `fish_lon`) VALUES ($fid, $flat, $flon)"); 
     } 
    } 


mysqli_close($mysqli); 
?> 
+0

Да, используя json и тело запроса лучше звучит для сложных данных. – hek2mgl

+0

Привет! У меня проблема с JSON. Я попробовал ваш образец с некоторыми настройками и в первый раз работал. Но внезапно я получаю ошибку, как Malformed JSON. Когда я тестирую и проверяю код JSON, который он передавал, но при отправке из приложения в скрипт PHP я получаю ошибку. Кажется, что что-то с кодировкой даже установлено на UTF8. – Josef

Смежные вопросы