如何正确使用PHP require
How to properly use PHP require
我有 3 个文件:index.php
、db.php
(数据库)和 functions.php
这是每个文件中的示例:
database.php:
define ("DB_HOST", "localhost");
define ("DB_USER", "root");
define ("DB_PASS", "1234");
define ("DB_NAME", "test");
try {
$dsn = "mysql:dbname=".DB_NAME.";host=".DB_HOST;
$dbh = new PDO($dsn, DB_USER, DB_PASS);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
index.php:
require $_SERVER['DOCUMENT_ROOT']."/config/db.php";
require $_SERVER['DOCUMENT_ROOT']."/config/functions.php";
if(isLoggedIn()) {
echo "hi";
}
functions.php:
function isLoggedIn() {
require $_SERVER['DOCUMENT_ROOT']."/config/db.php";
$stmt = $dbh->prepare("SELECT * FROM users....");
$stmt->execute();
}
我得到的错误是:
Notice: Constant DB_HOST already defined in /var/www/config/database.php
我试过的:
我试图在我的所有文件中用 require_once
替换 require
但它给出的错误是:
Fatal error: Uncaught Error: Call to a member function prepare() on null in functions.php
所以,由于它对您来说没有意义,所以我在这里的最后一个答案是您可以做些什么来一劳永逸地解决这个问题的完整答案:
db.php
<?php
$host="localhost";
$user="root";
$password="1234";
$db="test";
try {
$dbh = new PDO("mysql:host=$host;dbname=$db",$user,$password);
} catch (PDOException $e) {
die("DB ERROR: ". $e->getMessage());
}
?>
index.php
require_once $_SERVER['DOCUMENT_ROOT']."/config/db.php";
if(isLoggedIn($dbh)) {
echo "hi";
}
functions.php
function isLoggedIn($dbh) {
$stmt = $dbh->prepare("SELECT * FROM users....");
$stmt->execute();
}
function anotherfunction($dbh) {
$stmt = $dbh->prepare("SELECT * FROM others....");
$stmt->execute();
}
上面的更正会让你省去照顾需求的痛苦,你需要 db.php 一次,这样你现在就可以访问它的变量并在需要时作为参数传递。
注意:感谢 Phil 富有成效的评论和详尽的阐述。
我有 3 个文件:index.php
、db.php
(数据库)和 functions.php
这是每个文件中的示例:
database.php:
define ("DB_HOST", "localhost");
define ("DB_USER", "root");
define ("DB_PASS", "1234");
define ("DB_NAME", "test");
try {
$dsn = "mysql:dbname=".DB_NAME.";host=".DB_HOST;
$dbh = new PDO($dsn, DB_USER, DB_PASS);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
index.php:
require $_SERVER['DOCUMENT_ROOT']."/config/db.php";
require $_SERVER['DOCUMENT_ROOT']."/config/functions.php";
if(isLoggedIn()) {
echo "hi";
}
functions.php:
function isLoggedIn() {
require $_SERVER['DOCUMENT_ROOT']."/config/db.php";
$stmt = $dbh->prepare("SELECT * FROM users....");
$stmt->execute();
}
我得到的错误是:
Notice: Constant DB_HOST already defined in /var/www/config/database.php
我试过的:
我试图在我的所有文件中用 require_once
替换 require
但它给出的错误是:
Fatal error: Uncaught Error: Call to a member function prepare() on null in functions.php
所以,由于它对您来说没有意义,所以我在这里的最后一个答案是您可以做些什么来一劳永逸地解决这个问题的完整答案:
db.php
<?php
$host="localhost";
$user="root";
$password="1234";
$db="test";
try {
$dbh = new PDO("mysql:host=$host;dbname=$db",$user,$password);
} catch (PDOException $e) {
die("DB ERROR: ". $e->getMessage());
}
?>
index.php
require_once $_SERVER['DOCUMENT_ROOT']."/config/db.php";
if(isLoggedIn($dbh)) {
echo "hi";
}
functions.php
function isLoggedIn($dbh) {
$stmt = $dbh->prepare("SELECT * FROM users....");
$stmt->execute();
}
function anotherfunction($dbh) {
$stmt = $dbh->prepare("SELECT * FROM others....");
$stmt->execute();
}
上面的更正会让你省去照顾需求的痛苦,你需要 db.php 一次,这样你现在就可以访问它的变量并在需要时作为参数传递。
注意:感谢 Phil 富有成效的评论和详尽的阐述。