Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lưu nhiều hình ảnh vào php mysql từ android nhưng chỉ có một hình ảnh được chèn

Trước hết, bạn đang ghi đè dữ liệu hình ảnh trong bạn doInBackground vòng lặp.

Thứ hai, mã tải lên PHP không có trong vòng lặp

JAVA

Bạn chỉ nên có một vòng lặp, khi bạn xây dựng JSON của mình, hãy đặt mọi thứ bạn cần vào đó

for (ImageAndText i : listItems) {
    JSONObject object = new JSONObject();

    String type = i.getType();
    String[] Type = type.split(":");
    String amount = i.getAmount();
    String[] Amount = amount.split(":");
    String description = i.getDescription();
    String[] Description = description.split(":");

    //Image
    String image = i.getImage().toString()
    Uri imageUri = Uri.parse(image);

    object.put("amount", Amount[1]);
    object.put("type", Type[1]);
    object.put("description", Description[1]);
    object.put("ts_id", id);
    object.put("image", image);
    object.put(Configs.KEY_IMAGE, getStringImage(imageUri));

    jsonArray.put(object);
}

Sau đó đặt JSON trong hashmap của bạn để gửi

@Override
protected String doInBackground(String... params) {
    try {
        HashMap<String, String> data = new HashMap<String, String>();
        data.put("listItems", jsonArray.toString());

        RequestHandler rh = new RequestHandler();
        String result = rh.sendPostRequest(Configs.STAFF_BENEFIT, data);
        return result;
    } catch (Exception e) {
        return "";
    }
}

PHP

Php sẽ thay đổi, bạn sẽ không cần $image = $_POST['image'];

Bạn sẽ nhận được dữ liệu hình ảnh từ json $listItems = json_decode( $_POST['listItems'], true );

Bạn sẽ đặt mã tải lên trong vòng lặp và chỉ chèn khi tải lên thành công

foreach( $listItems as $item ){ 
    $path=time()."$id.png";
    $actualpath="http://192.168.107.115:80/Android/CRUD/PhotoUpload/$path";
    $bytes=file_put_contents( $savepath, base64_decode( $item['image'] ) );
    if( !$bytes ){
        echo 'Error saving image';  
    }else{
        $stmt->bind_param('sssss', 
        $item['type'], 
        $item['amount'], 
        $item['description'], 
        $actualpath, 
        $item['ts_id'] );
        $res=$stmt->execute();
        if( !$res ) echo 'Query failed with code: '.$stmt->errno;
    }
} 

CHỈNH SỬA:

Tập lệnh PHP đầy đủ

<?php
    if( $_SERVER['REQUEST_METHOD']=='POST' ){
        if( !empty( $_POST['listItems'] ) ){
            $listItems = json_decode( $_POST['listItems'], true ); 
            $mysqli = new mysqli("127.0.0.1:3307", "root", "", "androiddb");
            if( $mysqli->connect_errno ) echo "Failed to connect to MySQL";
            $sql="INSERT INTO `staff_benefit` 
                 ( `type`, `amount`, `description`, `image`, `ts_id` ) 
                  VALUES ( ?, ?, ?, ?, ? )";
            if($stmt=$mysqli->prepare($sql )){
                $url="http://192.168.107.115:80/Android/CRUD/PhotoUpload/";
                foreach( $listItems as $item ){ 
                    $image_name = time().".png";
                    $save_path = 'PhotoUpload/'.$image_name;
                    $image_url = $url.$image_name;
                    $bytes=file_put_contents($save_path, base64_decode($item['image']));
                    if( !$bytes ){
                        echo 'Error saving image';  
                    }else{
                        $stmt->bind_param('sssss', 
                        $item['type'], 
                        $item['amount'], 
                        $item['description'], 
                        $image_url, 
                        $item['ts_id'] );
                        if( !$res=$stmt->execute()){ 
                            echo 'Query failed with code: '.$stmt->errno;
                        }
                    }
                } 
            }
            $mysqli->close();
        }
    }
?>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Magento Mass Import hình ảnh với MAGMI - không bao gồm hình ảnh

  2. MySQL DAYOFWEEK () - tuần của tôi bắt đầu từ thứ hai

  3. Truy vấn đếm các từ riêng biệt của tất cả các giá trị trong một cột

  4. MySQL nhận tất cả các hàng bị ảnh hưởng cho nhiều câu lệnh trong một truy vấn

  5. MySQL 'nếu tồn tại' lỗi