回答編集履歴

1

サンプルコード追加

2016/08/30 09:26

投稿

snowfaller
snowfaller

スコア125

test CHANGED
@@ -45,3 +45,121 @@
45
45
 
46
46
 
47
47
  と言った考慮が必要です。
48
+
49
+ サンプルコード
50
+
51
+ ---
52
+
53
+ Amazonへ投げるための処理と言うことですので、
54
+
55
+
56
+
57
+ - テーブルの検索結果を1件づつ取り出して、5件取り出したらAmazonを呼び出す
58
+
59
+
60
+
61
+ と言う流れでサンプルを示します。
62
+
63
+ mysqliは非推奨とのことですのでPDOを使ったMySQLのアクセスで示します。
64
+
65
+ ```php
66
+
67
+ <?php
68
+
69
+ //アマゾンのAPIを呼び出す処理(適宜修正してください)
70
+
71
+ function toAmazon($requestObjects) {
72
+
73
+ $results = array();
74
+
75
+ foreach($requestObjects as $resultObject) {
76
+
77
+ array_push($results, $resultObject->variable);
78
+
79
+ }
80
+
81
+ return $results;
82
+
83
+ }
84
+
85
+
86
+
87
+ //MySQLに接続
88
+
89
+ $con = new PDO('mysql:host=<ホスト名>;dbname=<データベース名>;charset=utf8', '<ユーザ名>', '<パスワード>');
90
+
91
+
92
+
93
+ //SQLの準備
94
+
95
+ $stmt = $con->prepare('select * from test0001');
96
+
97
+
98
+
99
+ //SQLの実行
100
+
101
+ $stmt->execute();
102
+
103
+
104
+
105
+ //オブジェクト格納用配列
106
+
107
+ $requestObjects = array(); // Amazonへ投げるオブジェクト(テーブルのレコード)の配列
108
+
109
+ $resultAmazon = array(); // Amazonからの取得したオブジェクトの配列
110
+
111
+
112
+
113
+ while($rowObj = $stmt->fetchObject()) {
114
+
115
+ // 検索結果から1行づつオブジェクト(テーブルレコード)を取りだす
116
+
117
+ // 条件式は「=」で正しい。fetchObject()の戻り値がFALSEだったらループを抜ける。
118
+
119
+ array_push($requestObjects, $rowObj);
120
+
121
+ // Amazonへ投げるオブジェクトの配列に追加
122
+
123
+ if(count($requestObjects) == 5) {
124
+
125
+ // Amazonへ投げるオブジェクトの配列が5個になったらAmazon呼び出し
126
+
127
+ $resultAmazon = array_merge($resultAmazon, toAmazon($requestObjects));
128
+
129
+ $requestObjects = array();
130
+
131
+ // Amazonへ投げるオブジェクトの配列を空にする。
132
+
133
+ }
134
+
135
+ }
136
+
137
+ if(count($requestObjects) != 0) {
138
+
139
+ // Amazonへ投げるオブジェクトの配列がに要素が残っていたらAmazon呼び出し
140
+
141
+ $resultAmazon = array_merge($resultAmazon, toAmazon($requestObjects));
142
+
143
+ $requestObjects = array();
144
+
145
+ }
146
+
147
+ var_dump($resultAmazon);
148
+
149
+ ?>
150
+
151
+
152
+
153
+ ```
154
+
155
+ - 「could not find driver」と言うエラーが出力された場合は、php-pdo_mysqlパッケージを追加してください。(例: sudo yum install php-pdo_mysql)
156
+
157
+ - while文の条件式で検索結果から1行づつオブジェクト(レコード)を取得しています。オブジェクトからカラムの値は「$rowObj->カラム名」で参照できます。
158
+
159
+ - 今回は、取得したオブジェクトをarray_push($requestObjects, $rowObj)で配列に1つづつ追加しています。
160
+
161
+ - if(count($requestObjects) == 5)で$requestObjectsに要素が5つ貯まったか判断を行い、貯まっていたらAmazonを呼び出します。
162
+
163
+ - Amazonからの結果は、$resultAmazon = array_merge($resultAmazon, toAmazon($requestObjects))で$resultAmazonに追加します。
164
+
165
+ - エラー判定処理や、クリーンナップ処理(データベース切断処理)などは割愛しています。