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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

解決済

2回答

2241閲覧

PHPで同じファイル内で異なるテーブルに保存する方法がわかりません

ababab

総合スコア47

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

1クリップ

投稿2016/07/04 06:45

PHPでデータベースに値を保存したいのですが、同じファイルで違うテーブルに保存する方法でつまづいています。

実行すると、$pro_producerを保存するところで

Invalid parameter number: number of bound variables does not match number of tokens in....

のエラーが出ます。
どのように書けば良いでしょうか?

$pro_name→データベース「product」のテーブル「mast_product」の「name」に保存
$pro_address→データベース「product」のテーブル「producer」の「address」に保存

PHP

1try 2{ 3 4//$pro_nameを保存 5$dsn = 'mysql:dbname=product;host=localhost'; 6$user = 'root'; 7$password = ''; 8 9$dbh=new PDO ($dsn,$user,$password,array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING)); 10$dbh->query('SET NAMES utf8'); 11 12$sql='INSERT INTO mast_product(name) VALUES(?)'; 13$stmt=$dbh -> prepare($sql); 14$data[]=$pro_name; 15$stmt -> execute($data); 16$dbh = null; 17 18//$pro_producerを保存 19$dsn = 'mysql:dbname=product;host=localhost'; 20$user = 'root'; 21$password = ''; 22 23$dbh=new PDO ($dsn,$user,$password,array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING)); 24$dbh->query('SET NAMES utf8'); 25 26$sql='INSERT INTO producer(address) VALUES(?)'; 27$stmt=$dbh -> prepare($sql); 28$data[]=$pro_address; 29 30$stmt -> execute($data); 31 32$dbh = null; 33

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

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

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

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

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

guest

回答2

0

ベストアンサー

php

1<?php 2 3try { 4 5 //$pro_nameを保存 6 $dsn = 'mysql:dbname=product;host=localhost;charset=utf8;'; 7 $user = 'root'; 8 $password = ''; 9 10 $data = []; // 初期化せよ 11 // array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION) でないと、try 〜 catchの意味がない 12 $dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 13 // $dbh->query('SET NAMES utf8'); <- ダメ 14 15 $sql = 'INSERT INTO mast_product(name) VALUES(?)'; 16 $stmt = $dbh->prepare($sql); 17 $data[] = $pro_name; 18 $stmt->execute($data); 19 20 // $dbh = null; null にするから、$dbh を再定義しなければならない。不要 21 //$pro_producerを保存 22 // 23// $dsn = 'mysql:dbname=product;host=localhost'; 24// $user = 'root'; 25// $password = ''; 26// $dbh はすでに定義済みなので不要 27// $dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING)); 28// $dbh->query('SET NAMES utf8'); 29 30 $sql = 'INSERT INTO producer(address) VALUES(?)'; 31 $stmt = $dbh->prepare($sql); 32 33 // 同じ $data という変数名を利用しているため、$data には $pro_name と $pro_address が入ってしまう。 34 // $data を初期化するか、異なる変数名を利用する 35 36 $data = []; 37 $data[] = $pro_address; 38 $stmt->execute($data); 39 40 // $dbh = null; // 基本的にこれは不要 41} catch (Exception $e) { 42 echo $e->getMessage(); 43}

投稿2016/07/04 06:53

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

$dataを初期化せずに要素に追加しているのが問題では。
こんな感じでどうでしょう(未検証)

PHP

1$data = array(); 2$data[]=$pro_address;

投稿2016/07/04 06:55

ttyp03

総合スコア16998

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問