0

我需要一些指导。从我对 MYSQL 的阅读中,我了解到要正确配置我的数据库并使其保持最佳运行,我需要按如下方式制作我的数据库。比如说我有

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

好的,现在我知道我需要创建一个名为 DB: address 和另一个 DB: phone 的新数据库

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

最后是另一个数据库:电话

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

问题 #1:这是设置我的数据库的有效方法吗?&& 这是正确的吗?

问题 #2:当使用 PHP 从 HTML 表单中插入记录时。我如何确保在表格中输入的地址被分配给 DB 地址并且正确的 address_ID 记录在 DB Members 中?&& DB Phone 和 DB 成员中的 phone_ID 是否相同?

谢谢您的帮助!

我的 mysql_query 语句应该是什么样的?

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

如何将地址分配给地址数据库并将电话分配给电话数据库?我需要使用单独的插入语句吗?如果是这样 - 我如何让他们的正确 ID 进入 DB 成员?

4

1 回答 1

0

不要SHA()用来散列您的密码

来自 MySQL 参考手册:

MD5 和 SHA-1 算法的漏洞利用已广为人知。您可能希望考虑使用本节中描述的其他加密函数之一,例如 SHA2()。

不应继续使用 mysql_* 函数套件

“不建议使用此扩展来编写新代码。相反,应使用 mysqli 或 PDO_MySQL 扩展。” - PHP.net

现在,关于你的问题

这是设置我的数据库的有效方法吗?&& 这是正确的吗?

这取决于。您是否打算每个用户只有一个电话号码,每个用户只有一个地址?通过在 members 表中指定 address_ID 字段,您可以有效地将成员的地址数量限制为一个。或者,如果您希望允许用户拥有任意数量的地址或电话号码,则电话和地址表应该具有对成员的引用——而不是相反。

如果您真的希望每个成员有一个地址和电话号码,您应该在成员表中包含所有这些信息。这将防止不必要的连接,并且您始终可以指定您想要的SELECT

如果您需要多个地址和电话号码,您仍然可能希望对所有数据进行非规范化并仅使用一个表。您只需将用户限制为一些合理数量的地址或电话号码。

我如何确保在表格中输入的地址被分配给 DB 地址并且正确的 address_ID 记录在 DB Members 中?&& DB Phone 和 DB 成员中的 phone_ID 是否相同?

如果您使用 mysqli,请使用insert_id属性. 如果您使用 PDO,请使用lastInsertId() 方法

于 2012-07-01T04:26:16.487 回答