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

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

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

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

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

PHP

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1035閲覧

Pythonで作成したJSON配列をPHPで処理を行いMySQLへ保存したい

Yt182

総合スコア4

MySQL

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

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

PHP

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2021/05/12 05:54

PythonでJSON配列を作成し、

Python

1import csv 2import requests 3import json 4import hashlib 5import hmac 6import base64 7 8# リクエスト先PHP 9API_Endpoint = 'http://localhost:8888/--------/like_logs_insert.php' 10 11###########ログ送信########### 12 13body = { 14 "data" : [ 15 { 16 'user_id': '0001', 17 'ins_id': 'green_green_greeeeen', 18 'ha_tag': '国分寺', 19 'tar_id': 'cobo.cobo.sucrier', 20 'li_at': '2021-05-11 00:25:46', 21 'pos_at': '2021-05-10T15:17:03.000Z' 22 }, 23 { 24 'user_id': 'AAAAA', 25 'ins_id': 'green_green_greeeeen', 26 'ha_tag': '国分寺', 27 'tar_id': 'kimagure_took', 28 'li_at': '2021-05-11 00:26:04', 29 'pos_at': '2021-05-10T14:53:51.000Z' 30 }, 31 { 32 'user_id': 'AAAAA', 33 'ins_id': 'green_green_greeeeen', 34 'ha_tag': '国分寺', 35 'tar_id': 'm710ys', 36 'li_at': '2021-05-11 00:26:19', 37 'pos_at': '2021-05-10T14:47:33.000Z' 38 } 39 ] 40 } 41 42json_body = json.dumps(body) 43custom_header = {'Content-Type': 'application/x-www-form-urlencoded', 44 'X-Signature' : ----------} 45 46# API接続 47result = requests.post(API_Endpoint,data=json_body,headers=custom_header) 48print( "status:", result.status_code ) 49 50print(result) 51print(result.text)

それをPHPで受け取り、連想配列型に処理を行い、

PHP

1require_once('function.php'); 2$dbh = dbConnect(); 3 4$logs = json_decode(file_get_contents('php://input'),true); 5// var_dump($logs); 6 7foreach($logs as $log){ 8 foreach($log as $values){ 9 foreach($values as $value){ 10 try { 11 $stmt = $dbh->prepare("INSERT INTO like_logs(user_id,ins_id,ha_tag,tar_id,li_at,pos_at) values (?,?,?,?,?,?)"); 12 $stmt->execute($value); 13 echo '送信成功'; 14 15 } catch(PDOException $e){ 16 echo '送信失敗'. $e->getMessage(); 17 exit(); 18 }; 19 } 20 } 21} 22?>

下記内容のテーブルへ保存したく思います。

MySQL

1①id int(191) AUTO_INCREMENT 2②user_id varchar(191) 3③ins_id varchar(191) 4④ha_tag varchar(191) 5⑤tar_id varchar(191) 6⑥li_at datetime(6) 7⑦pos_at datetime(6) 8⑧created_at timestamp(6)

エラーが出ず、ターミナル上では送信成功と18回プリントされますが、MySQLへ値の更新がされません。
理由がわからず、どなたかわかる方いらっしゃいませんでしょうか。

宜しくお願い致します。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/05/12 07:06

こんにちは。 問題文読ませていただきました。 問題の切り分けを行いたいです。 ・var_dump($logs);では正しくPythonからデータは送られていますでしょうか? ・foreach($values as $value){ 内の$valueには正しく値は返されているでしょうか? ・$dbh = dbConnect(); が正しく動いていることを確認するために、$dbh = dbConnect();直下でselect文を実行してsqlが叩けることをご確認いただけますか? ご確認のほど、よろしくお願いいたします。????‍♂️
yambejp

2021/05/12 07:42 編集

PHPはhttp経由ではなくCLIモードなのでしょうか? (http経由ならpostなどで渡すと思いますが・・・)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問