簡體   English   中英

在php函數中使用外部包含的文件

[英]Use external included file inside php functions

我正在寫一個functions.php文件...現在,某些函數必須訪問數據庫。 我有一個包含連接腳本的db_connect.php文件。 我已經將它包含在functions.php中,其中包括:

require "sys/db_connect.php";

但是如何在其中使用連接腳本($ con)

function a() {
   ...
}
function c() {
   ...
}

等等? 我已經嘗試將$ con變量設置為全局變量,但是沒有成功。

function a($db) {
   //do something with $db
}
function c($db) {
   //do something with $db
}

$result = a($conn);
$something = c($conn);

有三種方法可以執行此操作,或者使用$GLOBALS訪問值,將其聲明為全局變量或將其作為參數傳遞

第一種方式:

include 'db_connect.php';
    function a() {
        $link = $GLOBALS['con'];
        // you can assign $GLOBALS['con'] or use it as a normal variable
    }

第二種方式:

include 'db_connect.php';
function a() {
    global $con;
    // then use it as a normal variable
 }

第三種方式:

function a($con) {
    // use the variable
}

在此處閱讀有關變量范圍的更多信息

這種結構應該起作用。 注意global聲明出現的位置。 我通常會將$ con變量作為參數傳遞給函數,而不是將其用作global變量。

dbconnect.php

<?
$con = mysqli_connect("blah","blah","blah","blah");
?>

的functions.php

require('dbconnect.php');
function a() {
  global $con;
   ...
}
function c() {
  global $con;
   ...
}

我這樣做:

// sys/db_connect.php
<?php
function db(){
  return new mysqli('host', 'username', 'password', 'database');
}
?>

// functions.php
<?php
require 'sys/db_connect.php';
/* you can even close the connection and reopen it this way
   $db = db(); $db->close(); $database = db(); */
function a() {
  $db = db();
}
function c() {
  $db = db();
}
?>

如果已在db_connect.php中的任何函數之外分配了變量$ con,則如下所示:

//----------
//sys/db_connect.php
//----------
$con = 'my connection script'; //You don't need to put global here

然后,您可以在另一個PHP文件中的函數a()和c()中使用$ con,如下所示:

//----------
//other_file.php
//----------
require 'sys/db_connect.php';

function a(){
 global $con;   //global allows $con from above to be used in this function a()

 print_r($con); //This line just for testing purposes!
}

function b(){
 global $con;   //global allows $con to be used in this function b()

 print_r($con); //This line just for testing purposes!
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM