我需要一些方向。从我对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:电话
DB Phone: which holds~ 1-phone_ID(UNIQUE), 2-area code, 3-phone
问题#1:这是设置数据库的有效方法吗? &安培;&安培;这是对的吗?
问题2:使用PHP从HTML表单中插入记录时。如何确保将表单中输入的地址分配给DB地址,并在DB成员中记录正确的address_ID? &安培;&安培; 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带入数据库成员?
答案 0 :(得分:0)
请勿使用SHA()
哈希密码
From the MySQL reference manual:
已知MD5和SHA-1算法的漏洞利用。你可以 希望考虑使用所描述的其他加密功能之一 而在本节中,例如SHA2()。
不应继续使用mysql_ *函数套件
“建议不要使用此扩展名来编写新代码。相反, 要么使用mysqli或PDO_MySQL扩展名。“ - PHP.net
现在,关于您的问题
这是设置数据库的有效方法吗? &安培;&安培;这是对的吗?
这取决于。您是否打算每个用户只有一个电话号码,每个用户只有一个地址?通过在成员表上指定address_ID字段,可以有效地将成员可以限制为1的地址数量限制为一个。或者,如果您想允许用户拥有任意数量的地址或电话号码,则电话和地址表应该引用该成员 - 而不是相反。
如果你真的做只需要每个成员一个地址和电话号码,你应该在成员表中包含所有这些信息。这样可以防止不必要的连接,您可以随时指定SELECT
。
如果您需要多个地址和电话号码,您仍然可能需要to denormalize,并且只需使用一个表来存储所有数据。您只需将用户限制在一些合理数量的地址或电话号码即可。
如何确保分配表格中输入的地址 DB地址和正确的address_ID记录在DB成员中? &安培;&安培; DB Phone和DB成员中的phone_ID是一样的吗?
如果您使用mysqli,请使用insert_id
property。如果您使用PDO,请使用lastInsertId() method。