我正在创建一个网站,并且是php和mysql的新手。我今天早上尽可能多地阅读,我已经注册并登录所有工作,以及用户可以用来提交内容的表单。
我的问题具体是我应该如何存储用户提交的内容。内容基本上是文章。就目前而言,我为所有存储其名称,ID和密码的用户提供了一个数据库,但每当有人创建帐户时,我会生成一个新数据库,用于存储他们提交的任何文章。这有什么问题吗?我不需要在这一点上搜索文章,但我想保存文章的文本,文章所属的类别以及文章的发布时间。
是否为每个签署错误想法的用户创建了一个新数据库?此外,我想知道内存问题。关于填充大量服务器硬盘空间的所有内容,我是否应该采取任何实际考虑因素?
答案 0 :(得分:2)
使用数据库时,主要关注点为SQL Injection。使用参数化查询或转义所有数据。另外在users表中也不存储纯文本密码。使用哈希和盐。
在架构上而不是为每个用户创建一个新数据库,我将使用与表users(包含id字段)相同的数据库和包含用户id的articles表。这应该足以知道每篇文章的作者是谁。
答案 1 :(得分:2)
我是CMS专属开发人员已经5年了,所以我也跳过了这些同样的箍。
如果您不介意完全限定数据库名称或处理多个连接切换,那么您的解决方案就可以了。我的公司为一个非常复杂的应用程序做了这件事,但我不得不提到,当连接失败并且我们经常遇到连接错误问题时,这令人沮丧和恼人。
在我的个人工作中,我更喜欢只使用一个数据库并为每个条目添加用户或公司ID字段。这样,如果由于某种原因我想从一个帐户聚合到下一个帐户,那就太小菜一点了。试图搜索数据库,绝对不是一个有趣的任务。主要内容字段(正文,内容等)几乎总是一个MySQL文本字段,以避免耗尽现场空间。确保在插入时进行某种数据清理以避免sql注入。 Mysql_real_escape_string通常可以解决问题。
在空间方面,除非你发展一个非常受欢迎的网站,否则你不会遇到问题。我在一台小型服务器上运行了几百个中型CMS,没有任何问题。
答案 2 :(得分:1)
为每个用户创建一个新的数据库绝对是可能的任何可能的场景中的错误方法,因为它违背了关系数据库的目的。
你应该(可能)做的是创建一个包含文章(标题,内容等)的文章表,以及一个包含用户数据的用户表。根据您的数据模型,您可以为每篇文章(外键)将作者数据存储在db行中,或者如果单篇文章可以包含多个作者,则可以将连接(关系)存储在单独的表中。