PHP类数据库连接范围问题
时间:2020-03-06 14:46:33 来源:igfitidea点击:
对于我正在PHP中执行的新项目,我创建了一个SQLMethods类以连接到数据库并执行查询。今晚是我实际进行测试的第一天(大约一个星期前我写了它,却忘记了它),并且发生了意外错误:当它调用ExecuteQuery()函数时,它将不会使用我所使用的数据库在构造函数中选择。
构造函数:
public function SQLMethods() { $SQLConnection = mysql_connect($SQLDBAddress, $SQLUserName, $SQLPassword); if (!$SQLConnection) { die('Could not connect: ' . mysql_error()); } mysql_select_db($SQLDB, $SQLConnection); }
有问题的功能:
public function ExecuteQuery($Query) { mysql_query($Query, $SQLConnection) or die('Could not perform query: ' . mysql_error()); }
有人知道这个问题可能是什么吗?构造函数完成后,连接是否关闭?
解决方案
我们应该在类中声明$ SQLConnection,并且应将其引用为
$this->SQLConnection
而不仅仅是$ SQLConnection。
ExecuteQuery
方法中不存在$ SQLConnection`。
我们可以将其作为参数直接传递给ExecuteQuery,也可以添加在构造函数中设置并在类方法中以$ this-> sqlConnection形式访问的sqlConnection类属性。
试图使用的变量$ SQLConnectionExecuteQuery()在另一个作用域内创建。 (
SQLMethods`函数)。
当PHP脚本完成工作或者我们自己关闭连接时(如果连接是在该脚本中进行的),连接将关闭。
如php.net文档所述,我们应该在ExecuteQuery
中跳过$ SQLConnection
变量。
If the link identifier is not specified, the last link opened by mysql_connect() is assumed.