Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP连接MYSQLi的正确方式(性能)_Php_Performance_Mysqli_Prepared Statement - Fatal编程技术网

使用PHP连接MYSQLi的正确方式(性能)

使用PHP连接MYSQLi的正确方式(性能),php,performance,mysqli,prepared-statement,Php,Performance,Mysqli,Prepared Statement,我熟悉PHP和MYSQLi连接,并阅读了PHP文档,包括,但我想知道使用PHP在MYSQLi中建立和关闭连接的正确方法(性能方面) 启动和关闭mysqli连接的最有效方式是什么? 如果mysqli连接在查询过程中丢失,正确的处理方法是什么? 以下是我当前的设置: 1. Opening a connection at the beginning of the php page 2. Making all the necessary queries through other classes

我熟悉PHP和MYSQLi连接,并阅读了PHP文档,包括,但我想知道使用PHP在MYSQLi中建立和关闭连接的正确方法(性能方面)

启动和关闭mysqli连接的最有效方式是什么?

如果mysqli连接在查询过程中丢失,正确的处理方法是什么?

以下是我当前的设置:

  1. Opening a connection at the beginning of the php page
  2. Making all the necessary queries through other classes
  3. Closing the connection at the end of page

/*
public exampleQuery ($conn, $p1, $p2) {
  $stmt = $conn->prepare("SELECT id FROM tbl_name WHERE c1=? AND c2=?");
  $stmt->bind_param("ss", $p1, $p2);
  $stmt->execute();
  // etc..
}
*/


$mysqli_connection = $connectionClass->connectToMYSQLi();
//Execute queries using prepared statements
$queryClass->exampleQuery($mysqli_connection,$param1, $param2);
$queryClass->exampleQueryTwo($mysqli_connection,$param1, $param2);
//etc...
$connectionClass_>closeMYSQLiConnection($mysqli_connection);
当新用户同时重新加载或访问页面时,PHP如何处理连接

PHP还将确保脚本中使用的某个变量不会被访问同一页面的其他用户使用。 数据库连接也是如此

使用某些凭据(用户名/密码)访问数据库并不意味着它会与使用相同凭据的其他人发生“冲突”。 数据库可以同时运行多个连接,即使它们都使用相同的凭据

但这不应该是您的问题/顾虑(作为功能的最终用户,作为开发人员),但它可以归结为PHP分叉过程或使用线程安全模块来服务每个请求。然后,与每个请求相关联的每个进程都会启动一个到数据库的新会话(或循环一个会话)

准备的发言:

准备好的陈述很好。它们为数据库提供了使用存储在数据库中的executionplan的机会。当您使用复杂查询时,这会带来一些速度优势。 它们还可以防止SQL注入

所以,继续使用准备好的语句

如何在代码中构造它们取决于您。数据库根本不关心是否从某个类调用语句。 如果使用来自Java应用程序的相同预处理语句,它们仍然是预处理语句(即,如果数据库支持它们)。数据库仍然会为他们准备好一个executionplan

所以,按照你最喜欢的方式去做

关于这个主题还有很多要说的,我解释的一些概念只是部分正确,但我希望这能勾勒出一幅大图。

当新用户同时重新加载或访问页面时,PHP如何处理连接

PHP还将确保脚本中使用的某个变量不会被访问同一页面的其他用户使用。 数据库连接也是如此

使用某些凭据(用户名/密码)访问数据库并不意味着它会与使用相同凭据的其他人发生“冲突”。 数据库可以同时运行多个连接,即使它们都使用相同的凭据

但这不应该是您的问题/顾虑(作为功能的最终用户,作为开发人员),但它可以归结为PHP分叉过程或使用线程安全模块来服务每个请求。然后,与每个请求相关联的每个进程都会启动一个到数据库的新会话(或循环一个会话)

准备的发言:

准备好的陈述很好。它们为数据库提供了使用存储在数据库中的executionplan的机会。当您使用复杂查询时,这会带来一些速度优势。 它们还可以防止SQL注入

所以,继续使用准备好的语句

如何在代码中构造它们取决于您。数据库根本不关心是否从某个类调用语句。 如果使用来自Java应用程序的相同预处理语句,它们仍然是预处理语句(即,如果数据库支持它们)。数据库仍然会为他们准备好一个executionplan

所以,按照你最喜欢的方式去做

关于这个主题还有很多要说的,我解释的一些概念只是部分正确,但我希望这能勾勒出大局