投稿者 |
メッセージ |
|
< PHPプログラミング ~ カラムの連結による違うテーブルデータの取得 |
|
時間:
月 12月 24, 2007 3:18 pm
|
|
|
登録日: 2007年12月 24日
投稿記事: 1
|
|
始めまして。
前任が蒸発して火消しに必死な初心者です。
PHP+MySQLで会員認証つきHPを制作しています。
仕様により会員データテーブル(x_member)と
アクター情報テーブル(x_person)に分かれて個人情報が格納されており、
(つまり x_member.mbr_id ≠ x_person.prsn_id)
会員認証時にログインした会員の個人情報(例えばprsn_nameとprsn_id)を
変数($prsn_name,$prsn_id)にとりたいのですがわからず困っています。
登録アドレス(prsn_email)をログイン名(mbr_login_name)にしているので
それを連結すればprsn_iもdprsn_nameもとれそうな気はするのですが
色々調べたのですがどうにもわからず・・・・
もしおわかりになる方がいらっしゃいましたらお願いします。
認証のコードとテーブル構造は下記の通りです。
function login_check($con, $user_id, $password)
{
$sql = "select * from x_member where mbr_login_name = '".$user_id."' and mbr_login_pwd = '".$password."'";
$rst = mysql_query($sql, $con);
return $rst;
}
if(($user_id!="")&&($password!="")){
//ログインチェック
$rst = login_check($con, $mbr_login_name, $password);
$cnt = mysql_num_rows($rst);
if($cnt==1){
$login_flg = 1;
$col = mysql_fetch_array($rst);
$member_id = $col['mbr_id'];
$member_mail = $col['mbr_login_name']
//ここにいれたい
//
//
}
else{
$pid = 0;
}
}
table:X_member
_________________________
|mbr_id | mbr_pwd | mbr_login_name |
−−−−−−−−−−−−−−−−−−−−−−−−−
|0001 | aaaaaaaa | AAAA@..... |
−−−−−−−−−−−−−−−−−−−−−−−−−
|0002 | bbbbbbbb | BBBB@..... |
−−−−−−−−−−−−−−−−−−−−−−−−−
|0003 | CCCCCCCC | CCCC@..... |
−−−−−−−−−−−−−−−−−−−−−−−−−
|0004 | DDDDDDDD | DDDD@..... |
−−−−−−−−−−−−−−−−−−−−−−−−−
table:X_person
_______________________
|prsn_id |prsn_name| prsn_email |・・・・
−−−−−−−−−−−−−−−−−−−−−−−−
|0001 | 吉田 | AAAA@..... |・・・・
−−−−−−−−−−−−−−−−−−−−−−−−
|0002 | 加藤 | XXXX@..... |・・・・
−−−−−−−−−−−−−−−−−−−−−−−−
|0003 | 佐藤 | BBBB@..... |・・・・
−−−−−−−−−−−−−−−−−−−−−−−−
|0004 | 鈴木 | ZZZZ@..... |・・・・
−−−−−−−−−−−−−−−−−−−−−−−−
|0005 | 小倉 | CCCC@..... |・・・・
−−−−−−−−−−−−−−−−−−−−−−−−
|0006 | 松本 | DDDD@..... |・・・・
−−−−−−−−−−−−−−−−−−−−−−−− |
|
|
|
|
|
|
|
時間:
火 12月 25, 2007 10:01 pm
|
|
|
登録日: 2006年8月 19日
投稿記事: 19
|
|
Quote: |
変数($prsn_name,$prsn_id)にとりたいのですがわからず困っています。
登録アドレス(prsn_email)をログイン名(mbr_login_name)にしているので
それを連結すればprsn_iもdprsn_nameもとれそうな気はするのですが
|
そのとおりだと思います.
Code: |
$sql = "SELECT * FROM x_person WHERE prsn_email = '".$member_name;
$rst = my_sql_fetch_array(mysql_query($con, $sql)); //ここlogin_checkで逆に書いてるけど,通るのかな?
|
でいいと思いますが?
その他
mbr_login_nameは最低でも"UNIQUE NOT NULL"(であるべき)なのでmysql_num_rowsといった冗長な書き方はやめて
Code: |
if ($col = @mysql_fetch_array($rst)) {...
|
が工程が少なくて幸せな気がするのは気のせいかもしれない.(何が言いたいんだ)
それと,login_checkはそれ以前の領域と処理が完全に分離していないから関数にする意味は無いんじゃ......
変なアクセスしないとだめなデータベースはよくない(理想的にもだめだけど,処理も重い).
正規化について勉強するといいかもしれない. |
|
|
|
|
|
|
|
|
新規投稿: 不可 返信: 不可t 自分の記事の編集: 不可 自分の記事の削除: 不可 投票への参加: 不可
|
|