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

时间:2013-12-16 23:33:17

标签: php function

我正在写一个functions.php文件......现在,一些函数必须访问db。我有一个db_connect.php文件,其中包含连接脚本。我把它包含在functions.php中:

require "sys/db_connect.php";

但如何在

中使用连接脚本($ con)
function a() {
   ...
}
function c() {
   ...
}

等等? 我已经尝试将$ con变量设置为全局,但没有成功。

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

有三种方法可以执行此操作,使用$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
}

详细了解变量范围here

答案 2 :(得分:0)

这种结构应该有效。请注意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;
   ...
}

答案 3 :(得分:0)

我这样做:

// 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();
}
?>

答案 4 :(得分:0)

如果您在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!
}