PHP/MySQL:基于数据库创建大型网站的正确方法

PHP/MySQL:基于数据库创建大型网站的正确方法,php,mysql,database-design,data-structures,mysqli,Php,Mysql,Database Design,Data Structures,Mysqli,我正在创建一个电影网站,IMDB.com,比如。。我对PHP和编程非常陌生,但我有一些书,当然还有StackOverflow:) 我已经做了很多工作,但现在我每页有600多行代码(仅限PHO)和20多个数据库表,仅用于存储和获取电影数据(多对多关系) 大多数代码都是MySQLi查询(准备好的语句),用于插入/获取数据和循环。没什么特别的,只是基本的PHP/MySQL 我有一些问题: 建议对每个SQL查询使用MySQLi prepared语句,或者最好只对内部PHP/数据库查询使用旧的MySQL

我正在创建一个电影网站,IMDB.com,比如。。我对PHP和编程非常陌生,但我有一些书,当然还有StackOverflow:)

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

大多数代码都是MySQLi查询(准备好的语句),用于插入/获取数据和循环。没什么特别的,只是基本的PHP/MySQL

我有一些问题:

  • 建议对每个SQL查询使用MySQLi prepared语句,或者最好只对内部PHP/数据库查询使用旧的MySQL语句,并将准备好的语句留给用户输入

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

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

希望你能帮我一把,也许你对正确建立这样一个网站有更多的建议


谢谢

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

西蒙尼 CakePHP 共点火器


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

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

西蒙尼 CakePHP 共点火器

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

  • 准备好的语句只适合您自己的内部查询。对于所有查询,您都有一个结构化的方法

  • 这取决于你在展示什么。但我想说的是,通常可以使用连接从更多表中获取所需的数据。为了获得正确的数据,您将进行更少的查询,而且听起来您的所有数据都以某种方式连接到您正在播放的一部电影

  • 正如Peter D所说,我建议使用web框架来学习如何将数据库处理与视图分离。您现在正在使用面向对象的方法吗?看看这些框架中的一些实现的MVC模式,这会让你走上正轨

  • 准备好的语句只适合您自己的内部查询。对于所有查询,您都有一个结构化的方法

  • 这取决于你在展示什么。但我想说的是,通常可以使用连接从更多表中获取所需的数据。为了获得正确的数据,您将进行更少的查询,而且听起来您的所有数据都以某种方式连接到您正在播放的一部电影

  • 正如Peter D所说,我建议使用web框架来学习如何将数据库处理与视图分离。您现在正在使用面向对象的方法吗?看看这些框架中的一些实现的MVC模式,这会让你走上正轨


  • 正如Peter D在前面提到的,将此添加到要使用的框架列表中。Zend框架 开源和免费

  • 建议使用MySQLi
  • 当然是MySQLi,但这本身就是一个大问题,如果你开始编码,你需要掌握T-SQL的基本知识才能理解其中的区别

  • 要获取所有电影数据
  • 这取决于很多事情。数据库的大小。想要的结果,即需要显示的信息、查询的响应时间与在用户视图中显示的时间。你知道加入工会吗

  • 如何将代码简化为

  • 对所有这些问题都是肯定的。www.w3schools.com/php/如果有任何帮助,可以学习MVC模式。现在对许多编程语言都很有用。也许一个框架可以帮助您在这里

    就像Peter D在将此框架添加到要使用的框架列表之前提到的那样。Zend框架 开源和免费

  • 建议使用MySQLi
  • 当然是MySQLi,但这本身就是一个大问题,如果你开始编码,你需要掌握T-SQL的基本知识才能理解其中的区别

  • 要获取所有电影数据
  • 这取决于很多事情。数据库的大小。想要的结果,即需要显示的信息、查询的响应时间与在用户视图中显示的时间。你知道加入工会吗

  • 如何将代码简化为

  • 对所有这些问题都是肯定的。www.w3schools.com/php/如果有任何帮助,可以学习MVC模式。现在对许多编程语言都很有用。也许一个框架可以帮助您

    正如上面的anwsers中提到的那样,我还将向您介绍一个实现MVC设计模式的框架。除此之外,大多数框架都内置了ORM,但如果没有,您可以看看Symphony或EZPDO,它是另一个很好的ORM,可以与(M)VC中的模型相结合

    CodeIgniter是一个非常快速和轻量级的MVC框架,它允许您非常快速地进行引导,但您可能还希望了解ZF(ZendFramework)。ZF有一个很好的框架特性集,总体来说非常灵活

    除此之外,请确保在or模型或对所选ORM的调用中分离读写。这将允许您将数据从属于多个MySQL框以获得更高的性能,但允许您使用一个数据库引擎启动

    添加使用Memcached的功能,这样您就可以缓存数据/对象,而不必访问数据库

    在使用缓存时,请考虑如何使数据库更新的缓存过期。换句话说,如果从数据库中选择要在视图中显示的数据,并且该数据没有更改,则不需要每次都访问数据库,而是从内存中提取它。一旦数据真的丢失了