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

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

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

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

PHP

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

Q&A

解決済

2回答

2299閲覧

sqlでの複数テーブルへのデータ保存

kpg

総合スコア23

MySQL

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

PHP

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

1グッド

1クリップ

投稿2019/09/24 08:17

・バージョン
PHP 7.1.23
mysql 5.6.43

phpでsql構文で2つのテーブルにデータを送ることは可能なのでしょうか?

コードは下記の通りです。

t_sales_dbテーブルとm_salesClient_mastergテーブルがあり、
$shop_urlのみm_salesClient_mastergテーブルに保存したいのですが、
書き方がわからず苦戦中です。

php

1try { 2 3 $sales_date = $_POST['sales_date']; 4 $driver_id = $_POST['driver_id']; 5 $driver_name = $_POST['driver_name']; 6 $companion_name = $_POST['companion_name']; 7 $salesClient_id = $_POST['salesClient_id']; 8 $shop_name = $_POST['shop_name']; 9 $progress_purpose_id = $_POST['progress_purpose_id']; 10 $progress_purpose_name = $_POST['progress_purpose_name']; 11 $progress_id = $_POST['progress_id']; 12 $progress_name = $_POST['progress_name']; 13 $sales_history = $_POST['sales_history']; 14 $shop_url = $_POST['shop_url']; 15 16 echo $shop_url; 17 18 $sql = "INSERT INTO t_sales_db( 19 sales_date, 20 driver_id, 21 companion_name, 22 salesClient_id, 23 progress_purpose_id, 24 progress_id, 25 sales_history 26 ) VALUES (?,?,?,?,?,?,?)"; 27 28 $sql = "INSERT INTO m_salesClient_master( 29 shop_url 30 ) VALUE (?)"; 31 32 $stmt = $dbh->prepare($sql); 33 34 $data[] = $sales_date; 35 $data[] = $driver_id; 36 $data[] = $companion_name; 37 $data[] = $salesClient_id; 38 $data[] = $progress_purpose_id; 39 $data[] = $progress_id; 40 $data[] = $sales_history; 41 $data[] = $shop_url; 42 43 44 // SQLで指令を出すための命令 45 if( !$stmt->execute($data)) { 46 echo 'クエリの送信に失敗しました。 SQL:'.$sql; 47 throw new Exception(); 48 } 49 // 必ずデータベース切断 50 $dbh = null; 51 52} catch(Exeption $e) { 53 echo 'ただいま障害により大変ご迷惑をお掛けしております(_ _)'; 54 exit(); 55}

質問文も拙く恐縮ですが、どなたかご教示いただけますと幸いです。

よろしくお願いいたします。

DrqYuto👍を押しています

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

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

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

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

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

m.ts10806

2019/09/24 09:07

$sqlという変数を上書きしているに過ぎませんが、そのあたりはお気づきでしょうか?
kpg

2019/09/26 09:21

m.ts10806様 ご指摘ありがとうございます。 こちら自分でも気づきまして修正しました。 返信が遅れすいません。
guest

回答2

0

ベストアンサー

1回のSQLで複数テーブルにINSERTを行うことは、MySQLではできません。

prepareexecuteという、SQL実行の処理を2セット行う必要があります。

投稿2019/09/24 08:22

maisumakun

総合スコア145183

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

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

kpg

2019/09/26 09:21

maisumakun様 すごくシンプルなことだったんですね。。。 ありがとうございます。
guest

0

post値をパラメータの通り変数に流し込むなら配列を作って回せばいいでしょう

PHP

1$a=[ 2 'sales_date', 3 'driver_id', 4 'driver_name', 5 'companion_name', 6 'salesClient_id', 7 'shop_name', 8 'progress_purpose_id' , 9 'progress_purpose_name' , 10 'progress_id' , 11 'progress_name', 12 'sales_history', 13 'shop_url', 14 ]; 15foreach($a as $val){ 16 $$val=filter_input(INPUT_POST,$val); 17} 18var_dump($shop_url);

2つのINSERTを発行するならmaisumakunさんのご指摘の通り
2回にわけてSQL文を処理するだけです。

投稿2019/09/24 08:38

yambejp

総合スコア114779

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問