我是很新,PHP,而我跟随这PHP academy tutorial on a register-login system.从MySQL转换到MySQLi,我如何将一个连接传递给MySQLi内部的函数?
在本教程中,他使用MySQL的功能,如mysql_connect
,mysql_query
,并mysql_real_escape_string
等
根据建议,我的工作在一个新的项目上,并希望使用mysqli完成相同的用户登录系统。到目前为止,我有两个功能需要一些数据库连接。下面是我的sanitize函数的例子:
<?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);
}
?>
我是否错过了什么?如何避免手动将连接变量添加到我创建的每个函数中?
你可以使用'global $ connection'。但这意味着您必须始终为连接使用相同的变量名称。 – Barmar
是的,显然。你缺少这个网站的搜索功能,这个问题已经被问几十次了。 –
更不用说整个“消毒”功能是错误的,并且易于注射。 –