我嘗試從Android向ArrayList發送ArrayList,然後將此ArrayList插入到MySQL表中時出現問題。ArrayList <String> Android to PHP。插入MySQL
所以,首先我發送列表與所有參數。
List<NameValuePair> list = new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("tag", "registerCall"));
list.add(new BasicNameValuePair("hourMatch", hourMatch));
list.add(new BasicNameValuePair("dateMatch", dateMatch));
list.add(new BasicNameValuePair("listPlayers", seleccionados
.toString())); //ARRAYLIST<String>
list.add(new BasicNameValuePair("idMatch", idMatch));
如果我打印參數列表:[標籤= registerCall,hourMatch = 0931,dateMatch = 2013年8月7日,listPlayers = [8,10],idMatch = 7]。
然後在PHP中,我收集參數並將其發送給函數。
if ($tag == 'registerCall') {
$hourMatch = $_POST['hourMatch'];
$dateMatch = $_POST['dateMatch'];
$idMatch = $_POST['idMatch'];
$listPlayers = $_POST['listPlayers'];
$call = $db->registerCallMatch($dateMatch, $hourMatch, $idMatch, $listPlayers);
if ($call != false) {
$response["success"] = 1;
$response["msg"] = "Insertados";
echo json_encode($response);
} else {
$response["error"] = 1;
$response["error_msg"] = "Error en la inserción";
echo json_encode($response);
}
}
而且功能:
public function registerCallMatch($dateCall, $timeCall, $idMatch, $listPlayers)
{
$result = mysql_query("INSERT INTO call_match (date_call, time_call, idMatch) VALUES ('$dateCall', '$timeCall', '$idMatch')");
if ($result != null) {
$idCall = mysql_insert_id();
if (is_array($listPlayers)) {
foreach ($listPlayers as $idPlayer) {
$result = mysql_query("INSERT INTO call_player (idCall, idPLayer) VALUES ('$idCall','$idPlayer')")or
die ('unable' . mysql_error());
return true;
}
} else {
return false;
}
} else {
return false;
}
}
的問題是,PHP不承認ArrayList中,所以我不能插入字符串到數據庫中。但是,如果我在PHP中創建一個數組,該函數運行良好。
編輯:好的。我發現了這個問題。如果我發送了一個字符串,我不能將它用作數組。現在我必須將字符串轉換爲數組。任何想法?這是字符串:[8,10]。我必須將8和10放在一起。
編輯:我找到了解決方案。
我們有一個ArrayList,我們必須創建一個字符串。我們可以使用很多方法,但我用:
Iterator it = seleccionados.iterator();
StringBuilder listIdPlayers = new StringBuilder();
int i = 0;
while (it.hasNext()) {
if (i > 0) {
listIdPlayers.append(" ").append(it.next());
i++;
} else {
listIdPlayers.append(it.next());
i++;
}
}
有了這個,我們有這樣的字符串XX XX XX XX XX。兩個字之間有一個空格。
現在我們去我們的php,我們使用explode()方法。用explode()我們創建數組。
$players = explode(" ", $listPlayers);
然後我們檢查結果是一個數組並重復它。
if ($result != null) {
$idCall = mysql_insert_id();
if (is_array($players)) {
foreach ($players as $idPlayer) {
$result = mysql_query("INSERT INTO call_player (idCall, idPLayer) VALUES ('$idCall','$idPlayer')")or
die ('unable' . mysql_error());
}
return true;
}
非常重要的,把回出的foreach。
謝謝
所以你的問題是? –
首先,您可以使用'echo'來檢查數據是否正在獲取或不在php端。那麼你的收益進一步。 –
如何讓PHP識別我在參數中發送的ArrayList。我會檢查它Patrik。謝謝。 – Filowk