質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

1539閲覧

mysqlとamazonAPIについて

marusu

総合スコア16

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2016/08/17 16:14

編集2016/08/17 16:15

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>"; } } ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

少しインデントが崩れててアレですが。

パッと見た所foreachのループ内で、
DBとの接続を閉じているのはまずいかなと思います。

接続を閉じるのは、
必要なDB処理が全て終わってから行うようにしましょう。

また、「mysql_*」シリーズのモジュールはPHP5.5より非推奨
PHP7.0より削除されています。
よほどのことがない限りは、
代わりに**「mysqli_*」、「PDO」**などで処理を置き換えることをおすすめします。
参考までにmysql_queryの解説リンクを掲載しておきますので、警告内の文をご一読下さい。

投稿2016/08/17 18:10

Panzer_vor

総合スコア1636

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

marusu

2016/08/17 19:25

書き方が下手で全然わからず申し訳ないです。 ご教授のおかげで取得できました!おっしゃる通りにループ内に記述しておりそれが原因でした。何かを処理中に閉じる実行などをするとエラーが発生することも勉強になりました。 ありがとうございました。
marusu

2016/08/17 19:33

mysqlの接続のモジュールも教えいただきありがとうございます。
Panzer_vor

2016/08/17 19:33

> marusuさん 問題が解消して何よりです^^ 厳密に言うと異なりますが、 DB切断(クローズ)を行うということは、 DB接続(コネクト)を解除することですからね。 mysql_connectで接続を行わずに、 クエリを実行しているのと似たようなものということですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問