1

我正在创建一个电影网站,IMDB.com 之类的.. 我对 PHP 和编程真的很陌生,但我当然有一些书和 StackOverflow :)

我已经做了很多工作,但是现在我每页有 600 多行代码(仅限 PHO)和 20 多个数据库表,仅用于存储和获取电影数据(多对多关系)

大部分代码是 MySQLi 查询(准备好的语句)来插入/获取数据和循环。没什么花哨的,只是基本的 PHP/MySQL。

我有一些疑问:

  • 建议对每个 SQL 查询使用 MySQLi 准备好的语句,还是最好只使用旧的 MySQL 进行内部 PHP/数据库查询,只留下准备好的语句供用户输入?

  • 要获取所有电影数据并显示它,我需要从超过 16 个不同的表中获取数据。我对每个表使用一个 MySQL 查询(有时更多)和很多循环。这是网站需要工作的正确方式?我的意思是..这是正常的???

  • 如何简化代码以简化阅读?我可以将所有这些查询分离到外部文件吗?我可以创建函数来处理每个表查询吗?

希望您能帮帮我,也许您对正确构建这样的网站有更多建议。

谢谢!!

4

5 回答 5

3

正如上面的回答中提到的,我还会指出您使用一个隐含 MVC 设计模式的框架。除此之外,大多数框架都内置了 ORM,但如果没有,您可以查看 Symphony 或 EZPDO 是另一个很好的 ORM,可以在 (M)VC 中与您的模型相关联。

CodeIgniter 是一个非常快速和轻量级的 MVC 框架,它可以让您快速引导,但您可能还想研究 ZF(ZendFramework)。ZF 具有出色的框架功能集,并且总体上非常灵活。

除此之外,请务必将您的读取和写入分开,或者在 Model 或您对所选 ORM 的调用中。这将允许您将数据从属到多个 MySQL Box 以获得更大的性能,但允许您使用一个数据库引擎开始。

添加使用 Memcached 的功能,以便您可以缓存数据/对象而不是访问数据库。

使用缓存时,请考虑如何使缓存过期以进行数据库更新。换句话说,如果您从数据库中选择数据以显示在视图中并且该数据没有更改,则您不需要每次都访问数据库,而是从内存中提取它。一旦数据确实发生了变化,您就希望使该缓存无效,使其不会过时,然后重新缓存新数据。

内存缓存:http ://www.danga.com/memcached/ '

-facebook也有一个版本

CodeIgniter - http://codeigniter.com/

EZPDO - http://www.ezpdo.net/blog/?p=2

ZendFramework - http://framework.zend.com/

于 2009-04-23T19:38:17.820 回答
1

考虑为您的网站查看或使用 Web 框架。

symfony CakePHP CodeIgniter

是一些比较主流的。如果有的话,向他们学习。

于 2009-04-23T18:03:05.210 回答
1
  1. 准备好的语句适合您自己的内部查询。您将对所有查询采用结构化的方法。

  2. 好吧,这取决于您展示的内容。但我想说的是,您通常可以使用联接从更多表中获取所需的数据。获取正确数据的查询会少很多,而且听起来您的所有数据都以某种方式与您正在放映的一部电影相关联。

  3. 正如 Peter D 评论的那样,我建议使用 Web 框架来学习如何将数据库处理与视图分离。您现在正在使用面向对象的方法吗?看看这些框架中的一些实现的 MVC 模式,它会让你继续前进。

于 2009-04-23T18:06:46.073 回答
1

就像之前提到的 Peter D 一样,将这个添加到要使用的框架列表中。Zend Framework http://framework.zend.com 开源免费。

  1. 推荐使用 MySQLi ...

肯定是 MySQLi,但它本身就是一个大问题,如果你开始编码,你需要掌握 T-SQL 的基础知识才能理解其中的区别。

  1. 要获取所有电影数据...

这取决于很多事情。数据库大小。想要的结果,即需要显示的信息、查询的响应时间与在用户视图中显示的时间。你知道JOIN,UNION吗?

  1. 如何将代码简化为...

是的所有这些问题。www.w3schools.com/php/ 如果它可以帮助并学习 MVC 模式。这些天对很多编程语言很有用。也许一个框架会在这里帮助你

于 2009-04-23T18:37:57.763 回答
1

对于这个问题:

“要获取所有电影数据并显示它,我需要从超过 16 个不同的表中获取数据。我对每个表使用一个 MySQL 查询(有时更多)和大量循环。这是网站需要工作的正确方式吗? ?我的意思是..这很正常???”

不。如果我理解正确,您应该使用某种类型的 JOIN,具体取决于您从数据库中检索的数据。获取大量数据的结果,然后在 PHP 中只挑选出你想要的部分,这比让数据库只排序/检索你想要显示的记录/信息要慢得多。

我强烈推荐一本有点过时但非常容易掌握的书,它涵盖了 PHP 和 MySQL/数据库的一般内容:http ://www.dmcinsights.com/phpmysql2/ - 它涵盖了许多“实践”技术以及代码,所以学习会很棒。

显然有一个带有更新信息的第三版,但我没有看过它。

于 2009-04-23T20:07:53.100 回答