如您所知,我是php中的新手,我有一些问题(比如任何新的开始),我的问题是我不能将像config.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');问题是我不能让$connect变量从config.php在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。
谢谢
发布于 2017-07-07 07:41:27
$connect存在于'config.php‘中。
在您的函数中,将$connect声明为“全局”,即:它存在于此函数的范围之外。
function rows($table){
global $connect;
$gettables = mysqli_query($connect,"SELECT * FROM $table");
$numrows = mysqli_num_rows($gettables);
return($numrows);
}发布于 2017-07-07 07:52:18
有两种可能的方法是可行的。
1.将$connect作为第二个参数传递给函数
include('config.php');
function rows($table,$connnect){
$gettables = mysqli_query($connect,"SELECT * FROM $table");
$numrows = mysqli_num_rows($gettables);
return($numrows);
}建议将$connect作为参数传递给建议使用全局变量的function.Not,参见此处的Are global variables in PHP considered bad practice? If so, why?
发布于 2017-07-07 07:56:39
问题是您在全局范围中声明了一个变量,但是在全局作用域中可用的东西在函数作用域中并不是自动可用的,除非您通过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);
}https://stackoverflow.com/questions/44965160
复制相似问题