mysqlとamazonAPIの勉強をしています。
amazonAPIサービスを使い商品情報を表示させることができましたが、データーベースに保存する際になぜか1件だけ保存されます。(テストのため商品名だけ保存してます)
取得した全件を保存させるためにはどうしたらいいですか?
ご教授よろしくお願いします。
<?php //Enter your IDs define("Associate_tag", "〇"); // アソシエイトタグ define("Access_Key_ID", "〇"); // アクセスキー define("Secret_Access_Key", "〇"); // シークレットキー ItemSearch("Electronics", ""); // Videosを選択、「」は好きなキーワードを選んでください。 //Set up the operation in the request function ItemSearch($SearchIndex, $Keywords){ $baseurl = "https://webservices.amazon.co.jp/onca/xml"; // リクエストのパラメータ作成 $params = array(); $params["Service"] = "AWSECommerceService"; $params["AWSAccessKeyId"] = Access_Key_ID; $params["Version"] = "2013-08-01"; $params["Operation"] = "ItemSearch"; $params["SearchIndex"] = $SearchIndex; $params["Keywords"] = $Keywords; $params['BrowseNode'] = "16462091"; $params["AssociateTag"] = Associate_tag; $params["ResponseGroup"] = "Medium"; $params["Sort"] = "salesrank"; $params["ItemPage"] = "1"; /* 0.元となるリクエスト */ $base_request = ""; foreach ($params as $k => $v) { $base_request .= "&" . $k . "=" . $v; } $base_request = $baseurl . "?" . substr($base_request, 1); //echo "【0.元となるリクエスト】<br>" . $base_request . "<br>"; /* 1.タイムスタンプを付ける */ $params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z"); $base_request .= "&Timestamp=" . $params['Timestamp']; //echo "【1.タイムスタンプを付ける】<br>" . $base_request . "<br>"; /* 2.「RFC 3986」形式でエンコーディング */ $base_request = ""; foreach ($params as $k => $v) { $base_request .= '&' . $k . '=' . rawurlencode($v); $params[$k] = rawurlencode($v); } $base_request = $baseurl . "?" . substr($base_request, 1); //echo "【2.「RFC 3986」形式でエンコーディング】<br>" . $base_request . "<br>"; /* 3.「&」とか消して改行 */ $base_request = preg_replace("/.*\?/", "", $base_request); $base_request = str_replace("&", "\n", $base_request); //echo "【3.「&」とか消して改行】<br>" . $base_request . "<br>"; /* 4.パラメーター名で昇順ソート */ ksort($params); $base_request = ""; foreach ($params as $k => $v) { $base_request .= "&" . $k . "=" . $v; } $base_request = substr($base_request, 1); $base_request = str_replace("&", "\n", $base_request); //echo "【4.パラメーター名で昇順ソート】<br>" . $base_request . "<br>"; /* 5.もう一度「&」でつなぐ */ $base_request = str_replace("\n", "&", $base_request); //echo "【5.もう一度「&」でつなぐ】<br>" . $base_request . "<br>"; /* 6.3行を頭に追加 */ $parsed_url = parse_url($baseurl); $base_request = "GET\n" . $parsed_url['host'] . "\n" . $parsed_url['path'] . "\n" . $base_request; //$base_request = "GET\nwebservices.amazon.com\n/onca/xml\n" . $base_request; //echo "【6.3行を頭に追加】<br>" . $base_request . "<br>"; /* 7.よく分からんエンコーディング */ $signature = base64_encode(hash_hmac('sha256', $base_request, Secret_Access_Key, true)); $signature = rawurlencode($signature); //echo "【7.よく分からんエンコーディング】<br>" . $signature . "<br>"; /* 8.「Signature」として最後に追加 */ $base_request = ""; foreach ($params as $k => $v) { $base_request .= "&" . $k . "=" . $v; } $base_request = $baseurl . "?" . substr($base_request, 1) . "&Signature=" . $signature; //echo "【8.「Signature」として最後に追加】<br>" . $base_request . "<br>"; //echo "<a href=\"" . $base_request . "\" target=\"_blank\">結果</a>"; $amazon_xml=simplexml_load_string(file_get_contents($base_request)); $link = mysql_connect('〇','〇','〇'); if (!$link) { die('miss!'.mysql_error()); } $db_selected = mysql_select_db('〇', $link); if (!$db_selected){ die('データベース選択失敗です。'.mysql_error()); } print('testデータベースを選択しました。'); foreach($amazon_xml->Items->Item as $item) { $item_title = $item->ItemAttributes->Title; // 商品名 $item_url = $item->DetailPageURL; // 商品へのURL $item_new_price = $item->OfferSummary->LowestNewPrice->FormattedPrice; // 新品商品の価格 $item_used_price = $item->OfferSummary->LowestUsedPrice->FormattedPrice; // 中古商品の価格 $item_price = $item->Offers->Offer->OfferListing->Price->FormattedPrice; // Amazon商品の価格 $sql = "INSERT INTO data (title) VALUES ('$item_title')"; $result_flag = mysql_query($sql); if (!$result_flag) { die('INSERTクエリーが失敗しました。'.mysql_error()); } $close_flag = mysql_close($link); if ($close_flag){ // print('success end'); } // echo "<p><a href=\"" . $item_url . "\" target=\"_blank\">" . $item_title . "</a><br>"; // echo "(Amazon)" . $item_price . "<br>"; // echo "(新品)" . $item_new_price . "<br>"; // echo "(中古)" . $item_used_price . "</p>"; } } ?>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/17 19:25
2016/08/17 19:33
2016/08/17 19:33