我怎么能包括在PHP

问题描述:

我在PHP是新的,你知道所有的功能文件和我有一些问题(像任何新的开始),我的问题是我不能包括像config.php所有功能文件中的文件我怎么能包括在PHP

我刚才3个文件

config.php

我只是连接到数据库的mysqli和变量是$connect

在functions.php中存在的仅仅是简单的功能

include('config.php'); 
function rows($table){ 
    $gettables = mysqli_query($connect,"SELECT * FROM $table"); 
    $numrows = mysqli_num_rows($gettables); 
    return($numrows); 
} 
的index.php中

include('functions.php'); 
echo rows('books'); 

和问题

是我不能得到config.php$connect变量函数工作在functions.php文件。

编辑

当我包括config.php功能里面的一切都会好的, 这样

function rows($table){ 
include('config.php'); 
    $gettables = mysqli_query($connect,"SELECT * FROM $table"); 
    $numrows = mysqli_num_rows($gettables); 
    return($numrows); 
} 

,但我不想这样做,因为我想包括一个config.php我拥有的所有功能。

谢谢

+0

尝试require_once代替包括 – Exprator

+2

要么移动到类,将变量'连接'传递给函数,而不是包含它或使用'全球'关键字 – DarkBee

+0

@Exprator我试过了,没有工作。 –

$ config存在于'config.php'中。

在你的函数中,声明$ connect为'global'即:它存在于这个函数的范围之外。

function rows($table){ 

    global $connect; 

    $gettables = mysqli_query($connect,"SELECT * FROM $table"); 
    $numrows = mysqli_num_rows($gettables); 
    return($numrows); 
} 
+0

非常感谢您的支持

有两种可能的方式可用。

1.Passing $作为第二个参数连接到功能

include('config.php'); 
function rows($table,$connnect){ 
    $gettables = mysqli_query($connect,"SELECT * FROM $table"); 
    $numrows = mysqli_num_rows($gettables); 
    return($numrows); 
} 
  1. 声明$连接作为全局变量

    function rows($table){ 
         global $connect; 
         $gettables = mysqli_query($connect,"SELECT * FROM $table"); 
         $numrows = mysqli_num_rows($gettables); 
         return($numrows); 
        } 
    
  2. 建议将$ connect作为参数传递给函数。不建议使用全局变量,请参考Are global variables in PHP considered bad practice? If so, why?

开始=>
+0

感谢信息伙计,我会使用全球,因为我的代码很简单,在其他项目中,我不会忘记你的话:),再次感谢 –

问题是你在全局范围声明了一个变量,但是全局范围中可用的任何东西都不会在函数范围中自动提供,除非你通过global $connect强制它有自己的注意事项。

global的一些替代品将是。

1)使用一个单独的类:

<?php 
//File connect.php 
class Connection { 
    private static $connection = null; 
    public static get() { 
      if (self::$connection == null) { self::$connection = mysqli_connect(...); } 
      return self::$connection; 
    } 
} 

并以此

include_once('connect.php'); 
function rows($table){ 
    $gettables = mysqli_query(Connection::get(),"SELECT * FROM $table"); 
    $numrows = mysqli_num_rows($gettables); 
    return($numrows); 
} 

2)常量(不是最好的主意):

<?php 
//File config.php 
define('CONNECTION',mysqli_connect(...)); 

用途为:

include_once('config.php'); 
function rows($table){ 
    $gettables = mysqli_query(CONNECTION,"SELECT * FROM $table"); 
    $numrows = mysqli_num_rows($gettables); 
    return($numrows); 
} 

3)把它作为参数传递给函数(config.php文件是你现在拥有它):

function rows($connection, $table){ 
    $gettables = mysqli_query($connection,"SELECT * FROM $table"); 
    $numrows = mysqli_num_rows($gettables); 
    return($numrows); 
} 

用作:

include('config.php'); 
include_once('functions.php'); 
echo rows($connection, 'books'); 

4)有类似的档案工作变量声明

<?php 
//config.php 
return mysqli_connect(...); 

用途为:

function rows($table){ 
    $connect = include('config.php'); 
    $gettables = mysqli_query($connect,"SELECT * FROM $table"); 
    $numrows = mysqli_num_rows($gettables); 
    return($numrows); 
} 

你需要开始自己的函数中的新对象的配置和使用的建筑工,以瞬移到数据库这样

$c=new config(); 
$con=$c->connect(); 
$req="SELECT * FROM table"; 
$conn=$con->query($req); 

这个作品,如果你已经在config.php做了类配置