首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在包含多条记录的php中将数组列表从android发送到服务器(Wamp)

问如何在包含多条记录的php中将数组列表从android发送到服务器(Wamp)
EN

Stack Overflow用户
提问于 2012-03-04 15:41:11
回答 1查看 1.6K关注 0票数 1

我使用php将数组列表从android手机发送到服务器(wamp)。

这是arraylist的输出

03-04 12:46:54.588: I/System.out(477):calldata arraylist contentstot_records=14,customer_id=abcd,phnumber=253647,type=OUTGOING,date=1/27/12 2:50:17 PM,duration=11,phnumber=456987,type=OUTGOING,date=1/27/12 3:41:02 PM,duration=9,phnumber=5554,type=OUTGOING,date=1/27/12 4:05:42 PM,duration=14

我想将此数组列表发送到服务器并在那里检索它,但它只插入了最后一条记录: phnumber=5554,type=OUTGOING,date=1/27/12 4:05:42 PM,duration=14

这是我的java file:phpconnect.java

代码语言:javascript
复制
package your.database.namespace;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
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 android.util.Log;


 public class phpconnect
{
    public phpconnect(DatabaseActivity databaseActivity)
{
    // TODO Auto-generated constructor stub
 }

 public void sendData(ArrayList<NameValuePair> data)
 {
  // 1) Connect via HTTP. 2) Encode data. 3) Send data.
 try
 {  System.out.println("send data"+data);
    HttpClient httpclient = new DefaultHttpClient();

    HttpPost httppost = new HttpPost("http://10.0.2.2/phpfiles/calllog.php");
    System.out.println(httppost);
    httppost.setEntity(new UrlEncodedFormEntity(data));
    System.out.println("send data2");
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity http_entity = response.getEntity();
    Log.i("postData", response.getStatusLine().toString());
    BufferedReader br = new BufferedReader(
new InputStreamReader(http_entity.getContent()));
String result = br.readLine();
    System.out.println(result);
       //Could do something better
 }
 catch(SocketException ex)
 {
  Log.e("Error : " , "Error on soapPrimitiveData() " + ex.getMessage());
    ex.printStackTrace();
 }

 catch(Exception e)
 {
     Log.e("log_tag", "Error:  "+e.toString());
  }  
  }}

这是我的php文件: calllog.php

代码语言:javascript
复制
<?php

$con=mysql_connect("localhost","root","");
echo $con;
if(!con)
{
    echo 'Not Connected......';
}
else
{
    echo 'CONNECTED.............';
}
$db=mysql_select_db('serverdb',$con);
 echo $db;
 if($db)
        {
           // return true;
echo "connection established";
        }
else
{ 
 echo "not conect";
}
$tot_records = $_POST["tot_records"];

$customer_id = $_POST["customer_id"];
echo $customer_id;
$i=($tot_records-2)/4;
echo $i;
//while(i>0)
//{
$number = $_POST["phnumber"];
$type = $_POST["type"];
$date = $_POST["date"];
$duration = $_POST["duration"];
    $query = "INSERT INTO calllogdb (number,type,date,duration) 
    VALUES ('  $number','$type','$date' ,'$duration' )";
    $insert_result = mysql_query($query);

 if($insert_result)
 {
echo 'New Record Added !!';
}


 //$i--;
 //}

    //close the connection
    //mysqlEnd();

 ?>
EN

回答 1

Stack Overflow用户

发布于 2012-03-04 16:04:43

看看进入PHP的原始post数据(使用$postdata = file_get_contents("php://input") )。这可能是一种XML格式,它被转换为PHP数组,并以字段名作为数组键。由于在示例数据中,3条记录具有相同的字段名称,因此在转换为PHP数组时,每个记录都会覆盖数组中前一条记录中的字段。因此,只有最后一条记录被存储。您将需要一个类似于您注释掉的循环来处理所有条目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9553210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档