我在我的网站上使用2个主要PHP文件作为脚本。一个侧重于从MySQL数据库访问数据,另一个包含网站所需的功能。在某些函数中(在函数文件中),我需要从MySQL文件中调用函数。我不明白如何正确地要求文件,以便在必要时可以使用它们。
include 'scripts/MySQL.php';
include 'scripts/functions.php';
位于页面顶部的文件(我直接使用两个文件中的函数)。
然后,当我需要在functions.php
中使用MySQL函数时,如果我不在MySQL.php
文件的顶部需要functions.php
,则MySQL函数为空,但如果我这样做,我收到此错误:
Fatal error: Cannot redeclare getUserInfo() (previously declared in .../scripts/MySQL.php:2) in .../scripts/MySQL.php on line 16
。这是getUserInfo(第2行是发布的第一行,第16行是最后一行):
function getUserInfo($steamID) {
$link = mysqli_connect(constant('DB_SERVER'), constant('DB_USER'), constant('DB_PASS'), constant('DB_NAME'));
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = 'SELECT * FROM '.constant('membersTable').' WHERE steamID = '.$steamID;
if($result = mysqli_query($link, $query)) {
return mysqli_fetch_assoc($result);
}
}
require
如何真正处理文件间依赖关系?为什么我的代码行为如此奇怪/如何解决?
另外,如果我想从另一个文件访问变量,我是否必须在每个使用变量的函数中要求该文件,或者我可以在包含函数的文件顶部要求它(后者似乎不是工作)?
很抱歉,如果这个问题有点令人困惑。我真的想不出一个好方法来解决我的问题(特别是因为我不确定自己是否理解这个问题)。
答案 0 :(得分:3)
使用include_once
或require_once
来避免重新声明您的功能
require_once 'scripts/MySQL.php';
require_once 'scripts/functions.php';
require_once语句与require相同,除了PHP 检查文件是否已被包含,如果是,则不包括 (要求)再次。
答案 1 :(得分:-2)