The Web Design Group

... Making the Web accessible to all.

Welcome Guest ( Log In | Register )

> Insert Multiple Rows into MySQL Database with PHP, Why does it only insert one row?
Dante Monaldo
post Aug 8 2012, 09:58 PM
Post #1


Advanced Member
****

Group: Members
Posts: 124
Joined: 22-March 09
From: California, USA
Member No.: 8,132



I have some code that takes 50 products from an API catalog and should be adding them to a database on my site. However, when I run the code, 50 rows are created, but only one product is added. All the other rows are left blank.

Has anybody had this problem before? What am I missing?

CODE
$insert = mysql_query("INSERT INTO imported_products (advertiser_id, buy_url, catalog_id, currency, description, image_url, in_stock, isbn, manufacturer_name, manufacturer_sku, name, price, retail_price, sale_price, sku, upc)
                    VALUES('$advertiser_id', '$buy_url', '$catalog_id', '$currency', '$description', '$image_url', '$in_stock', '$isbn', '$manufacturer_name', '$manufacturer_sku', '$name', '$price', '$retail_price', '$sale_price', '$sku', '$upc')");
    if(!$insert){
        $update = mysql_query("UPDATE imported_products SET advertiser_id='$advertiser_id', buy_url='$buy_url', catalog_id='$catalog_id', currency='$currency', description='$description', image_url='$image_url', in_stock='$in_stock', isbn='$isbn', manufacturer_name='$manufacturer_name', manufacturer_sku='$manufacturer_sku', name='$name', price='$price', retail_price='$retail_price', sale_price='$sale_price', upc='$upc' WHERE sku='$sku'") or die (mysql_error());
        if(!$update){
            echo 'Could not update product. SKU: '.$sku.'';
        } else {
            echo 'UPDATE Mission Accomplished.';
        }
    } else {
        echo 'INSERT INTO Mission Accomplished.';
    }
}


I would really appreciate some help on this smile.gif
User is offlinePM
Go to the top of the page
Toggle Multi-post QuotingQuote Post
 
Reply to this topicStart new topic
Replies
Dante Monaldo
post Aug 9 2012, 11:08 PM
Post #2


Advanced Member
****

Group: Members
Posts: 124
Joined: 22-March 09
From: California, USA
Member No.: 8,132



Yes, I think I hear what you are saying. I'm just confused how I should be using the $key => $value when there's multiple values that are related to each product (i.e. name, description, price, etc.)

You've been requesting the full code. Not sure how much help it's going to be, but here it is.

CODE
<?php
$webid="*******";
$CJ_ID="*******";
$url="https://product-search.api.cj.com/v2/product-search?website-id=$webid&advertiser-ids=joined";

// Define Variables
$advertiser_id = 'advertiser-id';
$buy_url = 'buy-url';
$catalog_id = 'catalog-id';
$currency = 'currency';
$description = 'description';
$image_url = 'image-url';
$in_stock = 'in-stock';
$isbn = 'isbn';
$manufacturer_name = 'manufacturer-name';
$manufacturer_sku = 'manufacturer-sku';
$name = 'name';
$price = 'price';
$retail_price = 'retail-price';
$sale_price = 'sale-price';
$sku = 'sku';
$upc = 'upc';

// Verify Headers
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, FAlSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: '.$CJ_ID));
$xml = curl_exec($ch);
curl_close($ch);

function produce_XML_object_tree($raw_XML) {
    libxml_use_internal_errors(true);
    try {
        $xmlTree = new SimpleXMLElement($raw_XML);
    }
    catch (Exception $e) {
        $error_message = 'SimpleXMLElement threw an exception.';
        foreach(libxml_get_errors() as $error_line) {
            $error_message .= "\t" . $error_line->message;
            }
        trigger_error($error_message);
        return false;
    }
return $xmlTree;
}
$feed = produce_XML_object_tree($xml);

foreach ($feed->products as $entry) {
    $advertiser_id = $entry->$advertiser_id;
    $buy_url = $entry->$buy_url;
    $catalog_id = $entry->$catalog_id;
    $currency = $entry->$currency;
    $description = $entry->$description;
    $image_url = $entry->$image_url;
    $in_stock = $entry->$in_stock;
    $isbn = $entry->$isbn;
    $manufacturer_name = $entry->$manufacturer_name;
    $manufacturer_sku = $entry->$manufacturer_sku;
    $name = $entry->$name;
    $price = $entry->$price;
    $retail_price = $entry->$retail_price;
    $sale_price = $entry->$sale_price;
    $sku = $entry->$sku;
    $upc = $entry->$upc;

$insert = mysql_query("INSERT INTO imported_products (advertiser_id, buy_url, catalog_id, currency, description, image_url, in_stock, isbn, manufacturer_name, manufacturer_sku, name, price, retail_price, sale_price, sku, upc)
                    VALUES('$advertiser_id', '$buy_url', '$catalog_id', '$currency', '$description', '$image_url', '$in_stock', '$isbn', '$manufacturer_name', '$manufacturer_sku', '$name', '$price', '$retail_price', '$sale_price', '$sku', '$upc')");
    if(!$insert){
        $update = mysql_query("UPDATE imported_products SET advertiser_id='$advertiser_id', buy_url='$buy_url', catalog_id='$catalog_id', currency='$currency', description='$description', image_url='$image_url', in_stock='$in_stock', isbn='$isbn', manufacturer_name='$manufacturer_name', manufacturer_sku='$manufacturer_sku', name='$name', price='$price', retail_price='$retail_price', sale_price='$sale_price', upc='$upc' WHERE sku='$sku'") or die (mysql_error());
        if(!$update){
            echo 'Could not update product. SKU: '.$sku.'';
        } else {
            echo 'UPDATE Mission Accomplished.';
        }
    } else {
        echo 'INSERT INTO Mission Accomplished.';
    }
}
?>
User is offlinePM
Go to the top of the page
Toggle Multi-post QuotingQuote Post
Ephraim F. Moya
post Aug 11 2012, 02:16 PM
Post #3


Advanced Member
****

Group: Members
Posts: 167
Joined: 2-September 07
From: New Mexico
Member No.: 3,702





CODE
This is what your array should look like:

$key[first] ----- $value['id']
            |---- $value['firstParam']
            |---- $value['...']
            |---- $value['lastParam']
  .
  .
  .
$key[last] ----- $value['id']
           |---- $value['firstParam']
           |---- $value['...']
           |---- $value['lastParam']

I usually use a special field in the array as the key. Mostly I use numeric ids because it is easier for the computer to distinguish the keys that way. Often there are missing keys in the id field. You code MUST be able to handle these. Also, a foreach construct will 'overshoot' by one field so you must take care of that, too.




This post has been edited by Ephraim F. Moya: Aug 11 2012, 02:34 PM
User is offlinePM
Go to the top of the page
Toggle Multi-post QuotingQuote Post

Posts in this topic
Dante Monaldo   Insert Multiple Rows into MySQL Database with PHP   Aug 8 2012, 09:58 PM
Ephraim F. Moya   I have some code that takes 50 products from an A...   Aug 9 2012, 08:55 AM
Dante Monaldo   Whoops, looks like I left that chunk out. Here...   Aug 9 2012, 12:42 PM
Ephraim F. Moya   Whoops, looks like I left that chunk out. Here...   Aug 9 2012, 03:46 PM
Dante Monaldo   I had this code working earlier to simply display ...   Aug 9 2012, 05:24 PM
Ephraim F. Moya   I had this code working earlier to simply display...   Aug 9 2012, 07:59 PM
Dante Monaldo   Yes, I think I hear what you are saying. I'm j...   Aug 9 2012, 11:08 PM
Ephraim F. Moya   [size=5] [code]This is what your array should loo...   Aug 11 2012, 02:16 PM
Brian Chandler   Can you explain what this means? In general, one...   Aug 11 2012, 10:36 PM
Ephraim F. Moya   Can you explain what this means? In general, on...   Aug 12 2012, 10:28 AM
Brian Chandler   I still can't parse "leaves the status ...   Aug 13 2012, 04:10 AM
Ephraim F. Moya   $fields = array(' 'advertiser...   Aug 13 2012, 10:27 PM
Dante Monaldo   Okay Brian, I see what you are saying with putting...   Aug 13 2012, 03:45 PM
Brian Chandler   Okay Brian, I see what you are saying with puttin...   Aug 14 2012, 01:48 AM
Ephraim F. Moya   Okay Brian, I see what you are saying with puttin...   Aug 16 2012, 12:07 PM
Brian Chandler   This does not make sense. If $feed->prod...   Aug 14 2012, 01:37 AM
Brian Chandler   Right. This is a typo... No, it doesn't. ...   Aug 14 2012, 01:47 AM
Ephraim F. Moya   What about when each entry in the products array...   Aug 14 2012, 09:33 AM
Dante Monaldo   So, I'm back with another question relating to...   Nov 11 2012, 08:45 PM


Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



- Lo-Fi Version Time is now: 27th April 2024 - 07:50 PM