• ベストアンサー

複数行のレコードを他のテーブルに保存?

$st = $pdo->query("SELECT * FROM list WHERE tno='" . $_POST["tno"] . "' ");で摘出した複数行のレコードを他のテーブルに保存したいのですが、うまくいきません。よろしくご教授お願い致します。

  • PHP
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

sqlの種別によってちがいますが insert into table_x select * from table_y 的な処理でいけるものもあります

murakami5656
質問者

お礼

$stmt = $pdo->prepare("insert into reg select * from list WHERE tno='" . $_POST["tno"] . "' ");で解決しました。ありがとうございました。

その他の回答 (2)

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.3

提示されたソースはqueryメソッドだけなので、そもそも抽出もしていませんよね。 fetchでLoopしながらinsert文のexecute もしくは fetchall → 取得した結果をLoopしながらinsert文のexecute が必要ですが、その部分はどう書かれているんでしょうか?それを提示してもらわないことには何も回答出来ません。

murakami5656
質問者

補足

説明不足ですみませんでした。下記です。 $st = $pdo->query("SELECT * FROM list WHERE tno='" . $_POST["tno"] . "' "); while ($row = $st->fetch()) { $tno = htmlspecialchars($row['no']); $id = htmlspecialchars($row['id']); $name = htmlspecialchars($row['name']); $kin = htmlspecialchars($row['kin']); $kazu = htmlspecialchars($row['kazu']); $kei = htmlspecialchars($row['kei']);

  • NeilMania
  • ベストアンサー率30% (40/131)
回答No.1

他のテーブルに保存するにも抽出処理しかしてないですよね。 他のソースを載せずに質問を投稿しているのか、このソースで出来ると 思っているのかどちらですかね。

関連するQ&A

  • sqlite3 group byがわかりません!!

    テーブル番号を入力すると、各テーブルごとの商品 数量 小計が表示されるようにしたいのですが、各テーブルの合計が表示できません。ご教授お願い致します! <?php $ban = $_POST['ban']; $kazu = $_POST['kazu']; $tno = $_POST['no']; //テーブル番号 $pdo = new PDO('sqlite:db/syouhin.db'); $st = $pdo->query("SELECT * FROM list WHERE tno='" . $_POST["no"] . "' "); while ($row = $st->fetch()) { $tno = htmlspecialchars($row['no']); $id = htmlspecialchars($row['id']); $name = htmlspecialchars($row['name']); $kin = htmlspecialchars($row['kin']); $kazu = htmlspecialchars($row['kazu']); $kei = htmlspecialchars($row['kei']); echo "<td>$id</td><td>$name</td><td>$kin</td><td>$kazu</td><td>$kei</td><tr>"; } $st = $pdo->query('SELECT sum(kei) as kei FROM list group by tno');//←tno( テーブル番号カラム名 if ($row = $st->fetch()) { $tno = htmlspecialchars($row['tno']); $gokei = number_format($row['kei']); echo '¥'."$gokei"; }

    • ベストアンサー
    • PHP
  • sqlte3空白レコードの削除

    空白レコードの削除ができません。ご教授お願い致します。 $st = $pdo->query(delete from list where name="" );

    • 締切済み
    • PHP
  • sqlite3 空白レコードの削除(2)

    空白レコードの削除ができません。 ターミナルからは、delete from list where name is null;でうまくいくのですが phpからは削除できません ご教授おねがいいたします。 $st = $pdo->query("delete from list where name is null ");

    • 締切済み
    • PHP
  • 1レコードのデータを複数行に分け通し番号を付ける

    Access2010にて、1レコードのデータを複数行に分け、追番毎に通し番号を付ける方法がわからず困っています。 テーブル1の様に、1レコードにはデータ格納するカラムが4つしかなく、同じ追番でデータが5個以上ある場合は、次のレコードに同じ追番を入力して5個目以降のデータを格納しているテーブルがあります。 テーブル1 追番 カラム1 カラム2 カラム3 カラム4 1 データ1 2 データ1 データ2 データ3 データ4 2 データ5 データ6 データ7 3 データ1 4 データ1 ・ ・ ・ これをテーブル2の様に1レコードにデータ1個づつ格納し、追番毎の番号を振りたいと思います。 テーブル2 追番 番号 データ 1 1 データ1 2 1 データ1 2 2 データ2 2 3 データ3 2 4 データ4 2 5 データ5 2 6 データ6 2 7 データ7 3 1 データ1 4 1 データ1 ・ ・ ・ クエリ1の様なユニオンクエリで近いかたち(テーブル3)にできたのですが、同じ追番で番号が1~4まで埋まったら、5以降の番号を降る方法が分かりません。 クエリ1 SELECT 追番, 1 AS 番号, カラム1 AS データ FROM テーブル1 WHERE カラム1 Is Not Null UNION ALL SELECT 追番, 2 AS 番号, カラム2 AS データ FROM テーブル1 WHERE カラム2 Is Not Null UNION ALL SELECT 追番, 3 AS 番号, カラム3 AS データ FROM テーブル1 WHERE カラム3 Is Not Null UNION ALL SELECT 追番, 4 AS 番号, カラム4 AS データ FROM テーブル1 WHERE カラム4 Is Not Null; テーブル3 追番 番号 データ 1 1 データ1 2 1 データ1 2 1 データ5 2 2 データ2 2 2 データ6 2 3 データ3 2 3 データ7 2 4 データ4 3 1 データ1 4 1 データ1 ・ ・ ・ よろしくお願いします。

  • 同一レコードを複数取り出したい

    以下のようなテーブルがあったとます。 <AA table> A B ------ 01 2 02 3 03 4 A = '01'のレコードを取り出す場合には、 select * from AA where A = '01'; A B ------ 01 2 で取れますが、このときBの値を判断して、以下のようにBの数だけ同一レコードを取り出したいと思います (where A = '01'ならば) A B ------ 01 2 01 2 (where A = '03'ならば) A B ------ 03 3 03 3 03 3 03 3 このように、同一レコードを条件によって複数取り出す処理をSQLで記述することはできるのでしょうか?

  • 複数のテーブルの レコード件数所得

    sql初心者です。 php sql4.1を使って テーブルA・テーブルBの総レコード件数を所得がうまくできません。 テーブルAの◇◇が○○の含むレコード件数を所得は SELECT count(*) FROM テーブルA WHERE ◇◇ LIKE ○○ でできました。 テーブルA・テーブルBの◇◇が○○の含むレコード件数を所得はどうすればいいのでしょうか? よろしくお願いいたします.

    • ベストアンサー
    • MySQL
  • 複数のレコードの値を取り出すには

    初心者です。あるカラムから複数のレコードの値を取り出すにはどのように書けばよいかどなたか教えていただけますでしょうか。 下記のコードではcalendartblというテーブルから1レコードのみ取り出せます。 テーブル:calendartbl holiday(カラム名) 2016/9/12(レコード1行目) 2016/9/14(レコード2行目) 2016/9/20(レコード3行目) 2016/9/26(レコード4行目) 2016/9/28(レコード5行目) コード: $sql = "SELECT calendartbl.holiday FROM calendartbl"; $ret = f_db_select($sql); foreach ($ret as $h){ $holiday = $h['holiday']; } 結果=2016/9/12 では複数のレコード、つまり「2016/9/12、2016/9/14、2016/9/20、2016/9/26、2016/9/28」を取り出して、上記の$holidayに代入させるにはどのように書けばよいでしょうか。 どなたか教えて頂けたら幸いです。 よろしくお願い致します。

    • 締切済み
    • PHP
  • テーブル2の単語の行を削除にはどうすればいい?

    アクセスです。 テーブル1には、tango テーブル2には、単語 というフィールドがあります。 テーブル1とtangoとテーブル2の単語を線で繋いで テーブル1のtangoと同じ値のテーブル2の単語の行を消したいのですが どういうクエリを作ればいいのでしょうか? 画像の状態 DELETE [テーブル1].tango, [テーブル2].単語 FROM テーブル1 INNER JOIN テーブル2 ON [テーブル1].tango = [テーブル2].単語; をやろうとすると 削除するレコードを含んだテーブルを指定してください となります。 「削除するレコードを含んだテーブル」は、テーブル2なのですが どこでテーブル2と設定すればいいですか? プロパティシートを見ても、テーブルを設定する場所がわかりませんでした。 レコードの削除に、 Whereとfromがありますが fromは選択できません。 この状態で、テーブル2の単語の行を削除にはどうすればいいですか?

  • 複数のテーブルのレコードをカウントする方法

    2つのテーブルのレコード数をカウントする方法を教えてください。 $sql = "SELECT * FROM テーブル1 and テーブル2"; $res = mysql_query($sql,$myLink); $num_k = mysql_num_rows($res); こんな感じでカウントできるかと思ったのですが出来ませんでした。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • 異なるテーブルのレコード削除

    オラクル初心者です。宜しくお願いします。 AAA、BBB、CCCというテーブルがあると仮定します。 画面から入力された値(ddd)をキーとして、CCCテーブルから該当するレコードをセレクト文で引っ張り、eeeという値を抜き出したとします。 そのeeeという値をキーにAAA、BBBテーブルのレコードを削除するにはどういうSQLを発行すればよろしいでしょうか? "delete from AAA, BBB where eee = (select eee from CCC where fff = ddd);" では駄目でした。 質問が下手でわかりにくいかもしれませんが、どうかご教授お願いします。