从MySQL转换为MySQLi,如何在函数内部传递MySQLi连接?

时间:2013-11-28 06:00:07

标签: php mysql mysqli

我是PHP的新手,我正在关注这个PHP academy tutorial on a register-login system.

在本教程中,他使用MySQL函数,如mysql_connectmysql_querymysql_real_escape_string等。

根据建议,我正在开发一个新项目,并希望使用mysqli来完成相同的用户登录系统。到目前为止,我有两个函数需要一些数据库连接。以下是我的清理功能的示例:

<?php
include ('connect.php');

function sanitize($data){
    return mysqli_real_escape_string($data);
}
?>

当我尝试运行时,我会收到如下错误:

  

警告: mysqli_real_escape_string()需要2个参数,1个给定

所以,我可以像这样添加到我的函数的连接:

<?php
//include ('connect.php');

function sanitize($data){
$connection = mysqli_connect('localhost', 'root', 'password', 'array-test');
    return mysqli_real_escape_string($connection, $data);
}
?>

哪个成功!问题是,我必须手动将它放在函数中,而不是从包含传递我的数据库连接。我将使用数据库连接有多个功能,如果我重复这么多,我一定是做错了。

到目前为止,我所考虑的唯一其他解决方法是在调用函数时在参数中传递连接变量。有点像下面这样:

<?php
include ('connect.php');

function sanitize($connection, $data){
    return mysqli_real_escape_string($connection, $data);
}
?>

我错过了什么吗?如何避免手动将连接变量添加到我创建的每个函数中?

1 个答案:

答案 0 :(得分:-1)

您可以使用全局变量。

function sanitize($data){
    global $connection;
    return mysqli_real_escape_string($connection, $data);
}

但最好只更改代码,以便将连接作为参数传递。这将允许您在必要时使用多个连接。