2012-07-17 89 views
1

我一直在挖掘堆栈和各种其他网站寻找我的问题的最佳答案。MySQLi Bulk在大型网站上准备好的语句?

我开发一个非常庞大且不断增长的怪物一个网站,在信息管理系统的形式。它的核心是运行PHP和MySQL。我只是更新了代码,更一般的意义上,mysqli,但没有充分利用所有功能。这是我现在正在工作的一部分。

我读了每吨准备好的语句,这是我肯定需要投入使用因为得到重新使用的语句的数量。

  • 我期待在约200个不同的页面中使用约50条准备的语句, 。有没有推荐的 方式来做到这一点?我见过的所有例子都处理了1或2.
  • 由于网站的性质不断增加,使用数据库等,我喜欢以前的mysql的一件事是它 不需要连接为每个查询指定,但与 mysqli。由于这个原因,我不得不调整我的功能。推荐的解决方案是否有 ?

我以过程形式建立网站,而不是面向对象,但我总是乐于接受建议,无论他们使用何种格式。

+0

难道只是我或者你似乎对准备好的陈述以及与数据库连接的工作方式有些混淆?不要误解我的意思,我很乐意帮助你解决困惑,但是a)我不够专业,最重要的是b)它不适合SO的答案。 – Adi 2012-07-17 15:36:11

+0

你可能是完全正确的!因此我的问题发布在这里。如果准备好的陈述不是我应该看的,我全都听过。 – user1532189 2012-07-17 16:55:05

回答

0

我会尝试尽可能准确,但我不是专家。

  • 你的第一点:你可能在寻找Stored Procedures。基本上你可以存储你的应用程序的某些逻辑重复使用。

    Prepared Statements,但是,是不同的。他们基本上是指“解析一次,执行很多次”,但它们不存储在服务器上并通过连接进行。

    在PHP中,每一个“页面加载”是一个不同的线程有自己的变量,因此它与数据库的连接,所以你不能真的再次使用Prepared Statement

  • 至于你的第二点,mysql_query()不需要传递给它的连接句柄,因为它假定你想使用上次创建的连接。

例如:

mysql_connect(); 
mysql_query("SELECT * FROM table"); 

$link = mysql_connect(); 
mysql_query("SELECT * FROM table", $link); 

是相同的。
因此,隐式使用连接并不意味着可伸缩性。

这是因为据我可以不提供可能是错误的信息写的,所以我强烈建议你真正了解这一点,然后如果你有一些这里的问题每个人都会很乐意回答。

+0

感谢您清理存储过程与准备好的语句。至于MySql_query,我知道这是一个声明连接的选项,我喜欢。最后,我将着眼于结合存储过程和准备好的语句。 – user1532189 2012-07-17 17:20:35