0

指示が必要です。MYSQL を読んだことから、DB を適切に構成し、最適に実行し続けるには、次のように DB を作成する必要があることを学びました。たとえば、私が持っているとしましょう

DB Members: which holds~ 1-Primary_ID, 2-email, 3-password, 4-address_ID, and 5-phone_ID. 

これで、DB: address と別の DB: phone という名前の新しい DB を作成する必要があることがわかりました。

DB Address: which holds~ 1-address_ID(UNIQUE), 2-street, 3-city, 4-state, 5-zip

最後に別の DB: phone

DB Phone: which holds~ 1-phone_ID(UNIQUE), 2-area code, 3-phone

質問 #1: これはデータベースをセットアップする効率的な方法ですか? && それが正しいか?

質問 #2: PHP を使用して HTML フォームからレコードを挿入する場合。フォームに入力されたアドレスが DB アドレスに割り当てられ、正しい address_ID が DB メンバーに記録されていることを確認するにはどうすればよいですか? && DB Phone AND DB members の phone_ID も同じですか?

助けてくれてありがとう!

私の mysql_query ステートメントはどのように見えるべきですか?

mysql_query("INSERT INTO Members (email, password, address, phone, timeStamp) 
VALUES('$email', 'SHA($pass)', '$address', '$phone', now())");

アドレス DB にアドレスを割り当て、電話を電話 DB に割り当てるにはどうすればよいですか? 別の挿入ステートメントを使用する必要がありますか? もしそうなら、適切なIDをDBメンバーに取得するにはどうすればよいですか?

4

1 に答える 1

0

SHA()パスワードのハッシュには使用しないでください

MySQLリファレンスマニュアルから:

MD5 および SHA-1 アルゴリズムのエクスプロイトが知られるようになりました。代わりに、SHA2() など、このセクションで説明されている他の暗号化関数のいずれかを使用することを検討してください。

mysql_* 関数スイートは引き続き使用しないでください

「この拡張機能は、新しいコードの作成には推奨されません。代わりに、mysqli または PDO_MySQL 拡張機能を使用する必要があります。」- PHP.net

さて、ご質問について

これはデータベースをセットアップする効率的な方法ですか? && それが正しいか?

場合によります。ユーザーごとに 1 つの電話番号と、ユーザーごとに 1 つのアドレスのみを使用する予定ですか? メンバー テーブルで address_ID フィールドを指定することにより、メンバーが制限できるアドレスの量を効果的に 1 つに制限できます。あるいは、ユーザーが任意の数のアドレスまたは電話番号を持つことを許可する場合は、電話番号テーブルとアドレス テーブルにメンバーへの参照を含める必要があります (その逆ではありません)。

メンバーごとに住所と電話番号を 1 つだけにしたい場合は、そのすべての情報をメンバー テーブルに含める必要があります。これにより、不要な結合が防止され、必要なものをいつでも指定できますSELECT

複数の住所と電話番号が必要な場合でも、非正規化して、そのすべてのデータに対して単一のテーブルを使用することをお勧めします。ユーザーを適切な数のアドレスまたは電話番号に制限する必要があります。

フォームに入力されたアドレスが DB アドレスに割り当てられ、正しい address_ID が DB メンバーに記録されていることを確認するにはどうすればよいですか? && DB Phone AND DB members の phone_ID も同じですか?

mysqli を使用する場合は、insert_idプロパティを使用します。PDO を使用する場合は、lastInsertId() メソッドを使用します。

于 2012-07-01T04:26:16.487 に答える