我正在开发一个允许在数据库中维护组织成员的 PHP/MySQL 应用程序。目前,在单击“添加成员”跨度时,我在数据库中插入一个空白条目并将创建的 ID 返回给 PHP。收到有效 ID 后,应用程序用户将通过 jQuery 重定向到引用新创建成员的编辑页面。
据我所知,这有以下优点/缺点:
好处
- 可以在提交 jQueryUI 对话框时立即将购买/付款与成员关联,因为我已经有了该成员的 ID。
- 统一了原本是单独的添加/编辑屏幕,因此更易于维护。
缺点
- 我很有可能会有过时的条目。也就是说,有人可以多次单击“添加成员”而不保存新页面,从而导致条目保持空白。
- 无法在表中强制执行尽可能多的约束,因为我需要能够为所有列接受 NULL。
我是否在考虑所有场景/优点/缺点?我应该为添加成员创建一个单独的页面,还是接受过时的条目更好,并且在我获取所有成员时可能添加一些检查以确保我没有显示过时的条目?
我目前用于添加成员的数据库功能:
public static function addMember()
{
$q = 'INSERT INTO ' . MemberTable::TABLE_NAME
. ' (' . MemberTable::ID
. ') VALUES (null)';
try
{
$db = new DBConnection();
$toRet = $db->execute($q);
}
catch(Exception $e)
{
error_log($e->getMessage());
$toRet = -1;
}
if($toRet > 0)
{
DBSystemEvent::logMessage("Added new member with ID $toRet");
}
unset($db);
return $toRet;
}
编辑1:重读问题后,我需要澄清第一段中提到的成员和用户是不同的。用户是指登录到应用程序的人。会员无法登录应用程序。这类似于医院应用程序(患者不能登录或编辑自己的信息;只有护士或医生等应用程序用户才能登录和编辑信息)。
编辑 2:虽然给定的答案都不完全适合我的问题(因为我可能不得不在不知道 ID 的情况下插入数据库),但我决定根据我的问题的措辞接受一个答案(因为让它更具体可能进入过于本地化的领域)。