MySQL和PHP关于如何正确存储信息


MySQL and PHP regarding how to store information properly

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

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

好的,现在我知道我需要制作一个名为 DB: 地址的新数据库和另一个 DB: 电话

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表单插入记录时。如何确保在表格中输入的地址已分配给数据库地址,并在数据库成员中记录正确的address_ID?&&&DB电话和DB成员中的phone_ID相同?

感谢您的帮助!

我的mysql_query声明应该是什么样子的?

mysql_query("INSERT INTO Members (email, password, address, phone, timeStamp) 
VALUES('$email', 'SHA($pass)', '$address', '$phone', now())");
如何将地址分配给

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

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

来自 MySQL 参考手册:

MD5和SHA-1算法的漏洞已经为人所知。你可以 希望考虑使用所描述的其他加密功能之一 改为在本节中,例如 SHA2()。

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

"不建议将此扩展用于编写新代码。相反 应该使用 Mysqli 或 PDO_MySQL 扩展 PHP.net 名。

现在,关于您的问题

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

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

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

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

如何确保将表单中输入的地址分配给 数据库地址和正确的address_ID记录在数据库成员中?&& DB电话和DB成员中的phone_ID相同?

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