こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

mysqlの検索について質問です。

現在、phpとmysqlを学習している初心者です。

会員登録の仕組みを作ろうとしています。
会員登録の手順としては、
1、新規登録者にメールアドレスを入力してもらい、乱数で仮IDの発行(メールアドレスと仮IDをテーブルAに保存)
2、入力されたメールアドレス宛に登録用のURLが記載されたメールを送信
3、登録用のURLのフォームにメールアドレス以外の情報を入力してもらい、データベース(テーブルB)に格納
という形で作っています。
大体のプログラムは、あるサイトに載せてある手順を参考に作成したのですが、
複数アカウントの作成を避けるため、手順1の際に入されるメールアドレスがテーブルBに存在するか確かめる必要があると思い、色々とネットで調べたのですがどのようなプログラムを書けば良いのかわかりませんでした。


具体的には
データベース内にテーブルAとテーブルBがあり、
前ページ(メールアドレス入力ページ)でテーブルA内のemailカラムにPOSTした$emailという変数名のデータ(メールアドレス)と合致するemailカラムを所有するレコードがテーブルB内にあるかどうかを知りたいです。
データはtrueかfalseで返ってくるか該当するレコード数で返ってくるとその後の条件分岐が行いやすいかなぁとは思っています。

このような処理を行いたい場合どのようなプログラムを書けばよいのでしょうか?

mysqlについて初めて質問するので、何か不足している記載情報や、わかりづらい点とうありましたら補足します。

ご回答、よろしくお願いします。

投稿日時 - 2014-09-04 17:37:36

QNo.8742224

困ってます

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

MySQLはどのAPIで扱うか決めていますか?

http://php.net/manual/ja/mysqlinfo.api.choosing.php


データベースへ登録とかも行うんですよね。また合致するレコードの有無が調べられないと、登録した会員のログイン処理も書けません。今回の処理が書けないと何も出来ないハズですが、どうするおつもりだったのでしょうか。

データベースの取扱いの基礎の基礎ですから、マニュアルを熟読するのが先じゃないかと思います。


(PDOの例)
$errmsg = '';
try {
$pdo = new PDO("mysql:host=localhost;dbname=test;charset=utf8", 'root', '');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare('select * from table_name where email = ?');
$stmt->execute(array($email));
if ($stmt->fetch() !== false) { $errmsg = '登録済みのメールアドレスです'; }
// try-end
} catch (PDOException $e) { $errmsg = $e->getMessage(); }

投稿日時 - 2014-09-04 19:16:23

補足

ご回答ありがとうございます!
URL、拝見しました。
参考にしたサイトがmysql_connectでデータベース接続していたので、mysqlということになると思います。
確かに仰られるとおり、基礎の基礎からわかっていないのでそちらのURLで順を追っていちから学習します!ありがとうございます!

投稿日時 - 2014-09-05 10:01:09

ANo.1

このQ&Aは役に立ちましたか?

8人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

>通っている教室ではPEAR MDB2を使用してデータベース接続をしていたのですが
>家のパソコンでPEAR MDB2で接続しようとしても上手く接続ができず、

PEAR::MDB2はインストールしないと使えません。

http://pear.php.net/package/MDB2/download

まぁ、特にコダワリがなければまずはPDOでの扱いを覚えるのがいいとは思います。

投稿日時 - 2014-09-08 11:46:49

お礼

何から何までご指導ありがとうございますm(__)m
仰るとおりPDOの扱いを学ぼうと思います。
ド初心者の拙い質問にご回答頂いてありがとうございますm(__)m

投稿日時 - 2014-09-08 12:34:27

ANo.2

>参考にしたサイトがmysql_connectでデータベース接続していたので、
>mysqlということになると思います。

マニュアル(提示したURL)にも書いてありますが、ネイティブなMySQL関数はすでに非推奨です。今から書くならMySQLiもしくはPDOで書き直すことを「強く」お勧めします。

今の状況だとネイティブなMySQL関数を使っているサイトの大多数は参考にしてはダメなものの方が多いです。最低でも接続後にmysql_set_charsetが書かれているか確認してください(これがないようなソースは「論外」。mysql_queryでset namesなんかはダメ)。

http://www.php.net/manual/ja/function.mysql-set-charset.php

php5.2.3以降、mysql5.0.7以降ならmysql_set_charsetが使えます。両方ともかなり古いバージョン(とっくにサポート切れ)ですから、これ以降を対象に書けば当然使っていないといけません。

投稿日時 - 2014-09-05 10:34:36

お礼

mysql_set_charsetは書いてありませんでしたので参考にしないようにします。
通っている教室ではPEAR MDB2を使用してデータベース接続をしていたのですが家のパソコンでPEAR MDB2で接続しようとしても上手く接続ができず、mysql_connectでの接続を参考にしてしまいました。
PDOについてこれから学習したいと思います!
ありがとうございます!

投稿日時 - 2014-09-08 11:12:51

あなたにオススメの質問