PHP PDO配置文件包括 – global
发布时间:2020-12-13 16:45:07 所属栏目:PHP教程 来源:网络整理
导读:我正在使用 mysql查询行转移到当前项目的PDO,我有一个问题. 对于这个任务,我不允许使用任何课程(如果你问我,愚蠢的限制) 基本上我得到一个非对象错误,因为我的主要php文件无法看到设置变量$DBH. 我通过设置$DBH全局函数来解决这个问题;所以它可以使用,但是我
我正在使用
mysql查询行转移到当前项目的PDO,我有一个问题.
对于这个任务,我不允许使用任何课程(如果你问我,愚蠢的限制) 基本上我得到一个非对象错误,因为我的主要php文件无法看到设置变量$DBH. config.php文件 try { $DBH = new PDO("mysql:host=host;dbname=db","username","Password"); $DBH->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); } catch (PDOException $e){ echo $e->getMessage(); } 一个php文件 function concName($concID) { global $DBH; //THIS is the area that im told is bad practice - can this be eliminated? $stmt = $DBH->prepare("SELECT CONCAT(`Firstname`,' ',`Surname`) AS 'Membername' FROM `members` WHERE `MemberID`= :MemberID"); $stmt->bindValue(":MemberID",$concID); $stmt->execute(); while($row = $stmt->fetch()) { return $row['Membername']; } } 解决方法
只需将$DBH作为参数传递给任何需要它的函数:
function concName($concID,$DBH) { $stmt = $DBH->prepare("SELECT CONCAT(`Firstname`,$concID); $stmt->execute(); while($row = $stmt->fetch()) { return $row['Membername']; } } 您还可以从$GLOBALS []数组访问它,而不是全局关键字,该数组在函数中使用时更明确地了解变量的来源.但是传递参数仍然比这更好. function concName($concID) { // Better than `global` keyword,use `$GLOBALS['DBH']` every time you access it in outside global scope // Still not preferred to passing a parameter though. $stmt = $GLOBALS['DBH']->prepare("SELECT CONCAT(`Firstname`,$concID); $stmt->execute(); while($row = $stmt->fetch()) { return $row['Membername']; } } 如果在配置文件中定义了多个全局变量,则可以将它们全部包装在一个数组中,然后传递给需要它们的函数.这将它们整齐地包装到一个配置选项包中,这些配置选项可用于任何需要它们的功能. config.php文件 // Global array of config options $config = array(); // various options $config['option1'] = 'option 1'; $config['option2'] = 12345; try { $config['DBH'] = new PDO("mysql:host=host;dbname=db","Password"); $config['DBH']->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); } catch (PDOException $e){ echo $e->getMessage(); } 然后将$config传递给函数调用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |