PHP5 mysqli vs mysql配置文件

时间:2012-09-18 14:36:20

标签: php mysql web-applications web

我知道这听起来确实非常愚蠢,但我发现mysqli准备好的语句及其面向对象的方法很有吸引力,所以我计划将我过去的一些涂鸦从mysql转换为mysqli。

这是......问题

在mysql中,我曾经有一个配置文件,例如包含在需要数据库的每个文件中(即require('sys/dbconfig.php');

我不确定我是否需要在mysqli中执行此操作,或者按照其他人的说法执行此操作,在需要时打开连接,在不需要时关闭它(即在任何地方粘贴$mysqli = new mysqli($host, $user, $pass, $database);需要数据库事务。

4 个答案:

答案 0 :(得分:1)

我这样做:

的config.php

define("DB_HOST", "127.0.0.1");
define("DB_NAME", "demo");
define("DB_USER", "root");
define("DB_PASS", "root");

database.php中

// include database constants
include_once("config.php");                   

// create db connection
$db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);         

现在您可以通过

创建SQL语句
$result = $db->query("SELECT x FROM y;");            

答案 1 :(得分:0)

MySqlI有两种版本:过程面向对象

当您使用程序样式时,所有都与mysqli _ 中的相同。 您正在引用面向对象的样式,并且配置不同。实际上更多面向对象。这意味着您必须创建一个新的mysqli实例并使用其方法来完成工作。

注意:当使用mysqli_时,与mysql一样,你会遇到与SQL注入相同的问题。您应该将mysqli与准备好的查询和参数绑定结合使用。

答案 2 :(得分:0)

Mysqli在用new mysqli(...)实例化时打开连接(PDO也是如此)。

在PHP会话期间,您不需要打开/关闭连接到数据库,因为PHP会话的持续时间(对于普通网站/ webapps)不到1秒。

在代码中多次强制等效mysql_connect / mysql_close只对长时间运行的脚本有帮助,这些脚本在整个持续时间内不需要有效连接。

每个mysql用户允许的单独mysql连接数受限制,具体取决于您的服务器配置。

如果您的某些脚本运行时间很长并且可能与许多其他脚本相交,则可能会占用每个用户的所有允许连接,从而阻止其他用户。

我建议(作为一种简单的方法)在一个文件中实例化mysqli,你将需要包含在你需要的任何地方使用global $db使用你在需要的地方存储mysqli对象的变量。

答案 3 :(得分:0)

我倾向于像Panique那样在配置文件中创建常量。

我还创建了一个带有静态方法fetch_db的App类,其中包含连接的代码。然后每当我需要数据库连接时,我只需要调用App::fetch_db()

我可以在今天下午晚些时候回家后发布代码和更多解释。