• 締切済み
  • すぐに回答を!

PHPデータベース・テーブルの移行

PHPとMySQLを使ってサイト構築しています。 MySQLのデータベース「group_color」にはテーブル「pink」とテーブル「blue」があります。 サイトでログインしている会員ユーザーの情報が「pink」に入っていてユーザーが ”ブルーグループに変更する”というボタンを押すと、テーブルpinkに入っている情報がテーブルblueに移行するようにしたいのですが、PHPの表記はどのようになりますか? 「ログインしている会員の情報」を移行させたいです。 テーブルのフィールドは ・id ・name ・birthday となっています。 よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数128
  • ありがとう数0

みんなの回答

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

ちなみにidが主キーだとして、pinkとblueが別管理しているとなると 普通の管理をしていると競合してしまいます たとえばpinkのid=1が田中さんだとして、blueのid=1にすでに鈴木さんがいると 田中さんはpinkからblueに移動できません たとえば別管理テーブルをつかうとか、移動の際に一定の数を足し引きするなど 工夫をすれば競合は防げますが、煩雑で堅牢さを損なうためあまりお勧めできません。 最初から1つのテーブルで管理していれば 田中さんのidと鈴木さんのidは競合することはなく、 グループをわけるフィールドだけみて、pink組とblue組をわけることができます

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • phpとデータベース

    毎回お世話になっております。あの今phpmy-adminで作成したデータベースにphpでつなげました。ユーザがウェブページ上で入力したものを保存してテーブルのそれぞれのレコードを表示させました。そこのページに”削除”というボタンを押すとテーブルからそのレコードだけを消せるようにしたいのですがどのようにすれば良いでしょうか?下のようなものを考えたのですが失敗してテーブルに含まれる全てのレコードを間違って消してしまいました。すみませんがよろしくお願いします。 2つテーブルがあり、entries とcommentsテーブルのフィールドはこのようになっております。 entries entry_id title entry entered_timestamp comments comment_id commentor_name commenter_email comment timestamp <html> <body> <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post"> <?php require_once("connect.php"); $booDelete = 0; $dbRecords = mysql_query("SELECT* FROM entries", $dbLocalhost) or die("Problem reading table: " .mysql_error()); while ($arrRecords = mysql_fetch_row($dbRecords)) { echo "<p>" .$arrRecords[0] ." "; echo $arrRecords[1] . ""; echo $arrRecords[2] . ""; echo $arrRecords[3] ."</p>"; echo "<INPUT type ='submit' value ='Delete' name='submit'>"; } if (isset($_POST["submit"])) { $dbRecordDelete = mysql_query("DELETE FROM entries WHERE entry_id = entry_id", $dbLocalhost); } ?> <form> </body> </html>

    • ベストアンサー
    • PHP
  • mysql3.23でテンポラリテーブルの使い方

    mysql3.23で、以下のようなテーブルでリスト形式の番号を、対応する他のテーブルのデータにマッチさせて代入する方法を教えてください。 [テーブル1] 'id' | 'type' 1 | 1,2 2 | 1,3,5 3 | 2,4 [テーブル2] 'id' | 'name' 1 | red 2 | blue 3 | yerrow 4 | green 5 | pink [このように出力したい] 'a.id' | 'b.name' 1 | red,blue 2 | red,yerrow,pink 3 | blue,green サブクエリなど使えばできるのだと思いますが、 ずっとmysql3.23なので、今まではプログラム側でループさせて出力していましたが、 今回テンポラリーテーブルに挑戦しようと思ったので、テンポラリーテーブルを使って取得する方法があれば、ぜひやり方を教えてください。 お願いします。

  • 【PHP + MySQL】ログインの

    ただいまPHP + MySQLにて、会員ログインシステムを導入した会員サイトを運営しておりますが、ログイン時にまったく別のユーザーでログインしてしまうという現象がおきて困っております。 たとえば、Aというユーザーが自分のIDとパスワードを使ってログインすると、ごく稀にBというユーザーでログインされてしまうということです。何かの間違いかと思い、会員データの編集画面を表示してもBの会員情報が表示されてしまい、ログアウトするまで、Bというユーザーでログインされているという状況です。 ID、パスワードの重複かと思いそちらもしらべましたが、 AはID、パスワードともに数字のみ BはIDが英数字 パスワードが数字 になっており、重複や入力ミスではないようです。 ちなみにWORDPRESSを用いてサイト構築を行っています。 ログインの処理自体はWordpressnのプラグインなどは用いていません。 一度キャッシュを制御するプラグインを用いて、ログインした状態のページをキャッシュしてしまう事はありましたが、そちらは今回とは関係ないのではないかと思っております。 また、現在そのプラグインは使用しておりません。 ログイン処理などを何度も見直しましたが、 間違ってログインされるような事は起こりえないと思うのですが、 何かサーバーの問題などでこのような事は起こるのでしょうか? 大変困っておりまして、お答えいただけるととてもありがたいです

    • ベストアンサー
    • PHP
  • 回答No.3

質問者は正規化について勉強する必要がある。

共感・感謝の気持ちを伝えよう!

  • 回答No.2
  • shimix
  • ベストアンサー率54% (865/1590)

>全く違うグループとして扱いたいので一つのテーブルでは管理できません。 >二つに分けてユーザーの解析などを行いたいのです。 「まったく違うグループ」というだけで、テーブル定義は基本的に同じなのですよね。であれば、グループの列を作って使う側で選別する方が楽ではないかというのがANo.1だと思います。解析などはどうとでも書けます。 ましてグループの変更(pink→blieの移行など)が発生するという状況であれば、なおさらですね。

共感・感謝の気持ちを伝えよう!

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

なんのためにテーブルをわけているのでしょうか? pinkとblueを択一するフィールドを一個用意しておけば1テーブルで管理できますが

共感・感謝の気持ちを伝えよう!

質問者からの補足

回答ありがとうございます!! 全く違うグループとして扱いたいので一つのテーブルでは管理できません。 二つに分けてユーザーの解析などを行いたいのです。

関連するQ&A

  • ファイルメーカー8 データ加工後、別テーブルのフィールドへ移行

    こんにちは!! スクリプトにより、 フィールドのデータを、別テーブルのフィールドへ、 加工してから移行する時、どのようにやっていますか? たとえば、 テーブル1、テーブル2とあります。 テーブル1にはIDフィールド、テーブル2にはお客様番号フィールド。 移行したいレコードを、チェックボックスにより選択させ、 スクリプトを実行したとき、 選択されたレコードに対し テーブル1のIDフィールドを元に、 "hoge"を文頭に追加してから、テーブル2のお客様番号フィールドに 入力。 1レコード終わったら、次のレコード。 試しに1つ作ってみました。 移行元フィールドのデータをコピーし、移行先フィールドに移動、 貼り付け。 まだ、複数レコードがあっても、1フィールドだけなので 大丈夫ですが、 こういう処理をしたいフィールドは30以上あります。 もっと良いスクリプトの書き方は、ないでしょうか? なぜこのような事がしたいかと言いますと、 多店舗あるネットショップの顧客情報などを管理したいと思ってます。 それぞれのネットショップでは、顧客情報や商品情報などを 独自のフィールドでCSVとして吐き出します。 各店舗用テーブルへCSVを取り込み、 それぞれのスクリプトにより、 加工しながら、一括管理テーブルへと移行させたいのです。 説明が下手で申し訳ありませんが、何卒よろしくお願いいたします。

  • レンタルサーバー&PHP&MySQLの環境で会員限定のデータベースを作

    レンタルサーバー&PHP&MySQLの環境で会員限定のデータベースを作成中です。 ログイン・ログアウトの処理を作成しているのですけど、いくつか質問させてください。 色々なサイトを巡り自分が解釈したログインの方法を書きます。 1.「会員登録画面」から会員情報を登録。(会員情報をMySQLに保存) 2.「ログイン画面」からフォーム(ID・PASS)を入力しボタンを押して認証。 3.入力されたデータを元にMySQLに問い合わせ会員情報の有無・情報の一致を判断 (情報がない場合はログイン画面へ) 4.セッションにID・PASSを保存。クッキーにセッションIDを保存。 5.会員限定ページに移動。セッションに保存してあるID・PASSを元にMySQLに問い合わせ一致するかどうかを判断。(していなければログイン画面へ) 6.セッションIDを更新する。以後ページを移動する度に一致しているかどうかを確認する。 このような感じになります。 ログアウトはセッション・クッキーを削除すればいいかなと思っています。 上記のような流れでいいのでしょうか。 いまいちセッションやクッキーに保存する内容をどうすればいいのか分かってない状態です。 又セキュリティ的にはどうでしょうか。データベースの改ざんや破壊されたら困るのである程度対策されたものを作成したいです。 ログイン時に自動ログインの有無のチェックボックスを設置してチェックされていたら2週間程度自動でログインされるようにもしてみたいです。 チェックされていたら自動ログインのkeyをランダム値で作成しクッキーとMySQLの会員情報に保存する。 ログインする度にkeyを更新する。(ページに移動する時も) ログアウトしたらkeyを削除する。 http://blog.ohgaki.net/espcs_if_a_fa_ia_a_pa_e_oa_a_sa_da_ca_sa ↑ここのサイトを見ました。 MySQLの会員管理なのですけど、MySQL専用のユーザー登録?(権限とか)を会員毎に登録していく方がいいのでしょうか。 PHPやMySQLは最近勉強し始めたので解り易く教えて頂ければ嬉しいです。 ソースなども添えて頂けるとありがたいです。 良い回答お待ちしています。

    • 締切済み
    • PHP
  • PDOで複数のテーブルを扱いたい

    PDOで複数のテーブルを扱いたい 現在ドットインストールというサイトで勉強しております。 http://dotinstall.com/lessons/sns_php_v2 このユーザー管理のレッスンで自分なりに応用してみようと戦っております。 これでは、ログインを行い登録したユーザーのプロフィールを表示するという内容なのですが、管理人とユーザーという風に分けてadminのテーブルに管理者を作成し登録し、登録された会員は自分のプロフィールを表示できるという流れにしたいと思っております。 レッスン通りでは問題なく出来ました。 そこで次にテーブルを分けて表示することにチャレンジしております。 users(会員テーブル)とは別にaddress(住所テーブル)を作成し会員テーブルと同じようにidカラムと住所を入れるtext項目をデータベースに作成しチャレンジしました。 サイト通りプロフィールを表示させる方法でやればこちらもテーブルを読み込ませることはできるのですが、URLの数値を変えれば当然他の人の情報も見えてしまいます。 $meというセッションで取得したいのですがusersの情報はログイン時にセッションとして受け取っているので#meで受け取りができるのですがaddressのテーブル情報にもこのセッション($me)で表示させるにはどのようにすればよいのでしょうか? やりたいことはログインした会員の情報のみ(他人のデータをみれない)表示させたい。 データベースのほかのテーブルもusersのセッションで共有したいということです。 わかりにくい説明で申し訳ございませんが、お助けいただけませんでしょうか。

    • ベストアンサー
    • PHP
  • phpでmysqlを使ってデータベース内の最大値の取得

    PHPでMYSQL内テーブル(hogehoge)の「no」フィールドの最大値を取得をしたいのですが、ほしい結果が得られません。 【PHP】 -------------------------------------------------------------- $my_Max = "select max(no) from hogehoge"; $kekka_max = mysql_query($my_Max); -------------------------------------------------------------- no→今回最大値を取得したい項目(int) 【結果】 これをechoで出力すると、 ----------------------------- Resource id #4 ----------------------------- となってしまいます。 「no」の中の最大値を取得したいのですが、どうしたらよいでしょうか? 【環境】 WindowsXP mysql:5.0.51 php:5.2.5

    • ベストアンサー
    • PHP
  • PHP/Mysqlで会員システムを構築

    サイト上に会員登録システムを導入しようと考えています。 PHP/Mysqlで、会員システムを構築する参考になるサイトもしくは書籍を教えてください。 要件は以下の通りです。 1.登録者はメールアドレスと画像認証(あれば)の文字を入力する 2.システムから入力されたメールアドレスへ正式登録案内のURLを送る(24時間以内有効) 3.登録者はURLへアクセスし、名前、住所などの詳細プロフィールを入力して登録完了 4.ログイン時は、「**さんようこそマイページへ!」などの会員登録者専用画面を表示する ログインしているユーザには「ようこそ○○さん」等のユーザ情報を記載。

    • ベストアンサー
    • PHP
  • PHPで表示したテーブル内容をCSV出力したい(PHPとMySQL別サーバ)

    はじめまして。 PHPで別サーバにあるMySQLのテーブル内容を表示しています。 表示されたテーブル内容をPHPからCSV出力したいのですが、どうすればよいのでしょうか? 下記のように、MySQLのあるサーバに接続して $host = "10.160.XX.XXX"; mysql_connect($host, "test_user", "test_passwd") 下記のようにエクスポートしてみましたがダメでした。 $sql = "select * into outfile '/home/test/test.txt' fields optionally enclosed by '~' terminated by ',' from test"; $res = mysql_query($sql,$conn); やりたいことは、ユーザがPHPの画面上からMySQLのさまざまなテーブル内容を選択表示した際に ユーザの任意で("CSV出力"という文字をクリック)、表示されたテーブル内容をCSV出力したい。 サーバはPHP、MySQLともにLinuxです。 PHPのバージョンは5.1.4 MySQLのバージョンは4.1.20です。 宜しくお願い致します。

    • 締切済み
    • PHP
  • phpでログイン時のIDチェック

    phpでIDとパスワードを入力してもらいそれをチェックしてログインするシステムを作っています。 普通にログインはできるのですがIDがsから始まりその後に数字が7桁来れば会員専用のメイン画面に移行し、それ以外のIDであれば普通のメイン画面に移行するプログラムを書きたいです。 例)IDがs1234567であれば会員用の画面、それ以外s1234,1234567,d1234567などのIDであれば違う画面に移行したいです。 自分が書いたコードはこのようになっておりこちらをどのように改良していけばこのようなプログラムが書けるか知りたいです。 どなたかご教授お願いします。 <?php require('dbconnect.php'); session_start(); if (!empty($_POST)) { // ログインの処理 if ($_POST['name'] != '' && $_POST['password'] != '') { $sql = sprintf('SELECT * FROM members WHERE name="%s" AND password="%s"', mysql_real_escape_string($_POST['name']), sha1(mysql_real_escape_string($_POST['password'])) ); $record = mysql_query($sql) or die(mysql_error()); if ($table = mysql_fetch_assoc($record)) { // ログイン成功 $_SESSION['id'] = $table['id']; $_SESSION['time'] = time(); header('Location: group.php'); exit(); } else { $error['login'] = 'failed'; } } else { $error['login'] = 'blank'; } } ?>

    • ベストアンサー
    • PHP
  • クイズ形式サイトの復習機能の構造

    ここのカテゴリでよいのか自信はないですが質問させていただきます。当方、PHP+MYSQLを使ってクイズ形式で学習問題(教科別)を提供するサイトを運営しています。 ユーザのアカウントを例えば間違った問題について、復習リストに記録してそれを元にしてDBから該当問題を順に取得し、問題に正解した場合はリストから削除するなどの機能を実現しているのですが・・・ DBのテーブルとしては ユーザ情報のテーブル 問題のテーブル があります。 やり方には2種類あるとおもうのですが・・・ 1.例えばユーザ情報のミス問題の番号を格納するフィールドを作成して、そのユーザ情報からミス問題リストを取得する方法。 2.問題テーブルに間違ったユーザのIDを記録するフィールドを作成し、復習する場合はMYSQLでユーザIDがミスフィールドに含まれいるものを検索する方法があると思います。 そこで、現在は1のやりかたで運用しているのですが、2に変更しようかなと思っています。理由は、教科別なので、PHPの配列でいろいろいじるより、問題リストを取得する際にMYSQLにやらせたほうが楽であろうと思うからなのですが・・・ 普通はこういうプログラムをする場合って、 プロ?の方はどのような制御をやられているのでしょうか? 簡略にまとめると各テーブルのフィールドはこんな感じです 1. user[ id/miss問題[22,339,292(問題id)] 2. user[ id ] 問題DB[ 問題/missuser[3922/2932(userid)]

    • ベストアンサー
    • PHP
  • phpとデータベースの文字化け

    mysqlとphpでの文字化けに苦しんでいます。 サイトなどめぐって [mysqld] default-character-set=utf8 skip-character-set-client-handshake をmy.iniに追加すると直るらしいのですが、入力後mysqlを再起動させてstatusコマンドでみてもlatain1になっていて変化ありません。 テーブル製作時の設定がわるいのかなと思ってみたり、、、 よろしくお願いします。

  • テーブル設計が

    mysql素人です group_idが登録者番号で5000以上の情報を持たせたいのですがテーブル設計がわかりません 才能ないなりに考えたのですがこんなテーブルしか思い浮かばないです・・・どんどんインサートしていく感じで考えたのですが良く考えたら、登録者が1万人くらいになったら1千万行くらいになって重くなる気がしました。もっと効率の良いテーブル設計ないでしょうか? id group_id valu idは単なる行の番号、valuが点数の情報です

    • ベストアンサー
    • MySQL