前提・実現したいこと
PHP,MySQLで、在庫管理のソフトウェアを作っています。
MySQLで、1つのデータベースsampledbを作成し、
複数のテーブルdb01,db02を作りました。
最初のレコードを作成するときに、同時に二つのテーブルに新規のレコードを作成しようと思います。
PHPで、pdo?を使ってinsert,update,deleteなどを実現しています。
最初は1つのテーブルdb01でうまくいきました。
仕様を変えてテーブルを2つに分けて、それぞれに共通のsysidというカラムを使い、他のカラムをそれぞれのテーブルに割り当てました。
最初のテーブルが
sysid,item1,item2,item3,item4
だったのを、
1つめのテーブルは、
sysid,item1,item2
2つめのテーブルは、
sysid,item3,item4
としたというイメージです。
最初に新規のレコードを作成しようとして次のようなことをしたいのですが問題が起きました。
$sql = "insert into DB01 (item1,item2) VALUES (:item1,:item2)"; $stmh = $pdo->prepare($sql); $stmh->execute(); $pdo->commit(); $sql = "insert into DB02 (item3,item4) VALUES (:item3,:item4)"; $stmh = $pdo->prepare($sql); $stmh->execute(); $pdo->commit();
複数のテーブルにアクセスするため、アクセスするテーブルごとに、$sql文を書き換えて実行させたいのですが、エラーが出ます。
「$sqlへの代入は1個のみにしてください」
という表示も出ています。
テーブルにアクセスするごとに書き換えて使用するということはできないのでしょうか?
**追記1**
最後に$sqlに複数のsql文を追加したのは、以下のようなものでした。
$sql = "insert into DB01 (00_C01_DB01__TohoRef, 00_C01_DB01__UketukeDate, 00_C01_DB01__GijutuTantoCode, 00_C01_DB01__GijutuTanto, 00_C01_DB01__JimuTantoCode, 00_C01_DB01__JimuTanto, 00_C01_DB01__Bikoid01) VALUES (:00_C01_DB01__TohoRef, :00_C01_DB01__UketukeDate, :00_C01_DB01__GijutuTantoCode, :00_C01_DB01__GijutuTanto, :00_C01_DB01__JimuTantoCode, :00_C01_DB01__JimuTanto, :00_C01_DB01__Bikoid01); insert into DB02A (00_C03_RP01_DB02A__ApcntCode) VALUES (:00_C03_RP01_DB02A__ApcntCode)";
**追記2**
こちらの追記もさせていただきます。create tableの部分をマークダウンにしました。不手際多く、ご迷惑をおかけしました。m(__)m
drop table DB01; create table DB01( sysid mediumint unsigned not null auto_increment,Lsysid mediumint,00_C01_DB01__TohoRef varchar(128), 00_C01_DB01__UketukeDate char(10), 00_C01_DB01__GijutuTantoCode char(20), 00_C01_DB01__GijutuTanto varchar(128), ... primary key(sysid)) DEFAULT CHARSET=utf8; drop table DB02A; create table DB02A( sysid mediumint unsigned not null auto_increment,Lsysid mediumint,00_C03_RP01_DB02A__ApcntCode char(20), 00_C03_RP01_DB02A__Apcnt varchar(128), ... primary key(sysid)) DEFAULT CHARSET=utf8;
回答4件
あなたの回答
tips
プレビュー