我怎么能包括在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
我拥有的所有功能。
谢谢
$ config存在于'config.php'中。
在你的函数中,声明$ connect为'global'即:它存在于这个函数的范围之外。
function rows($table){
global $connect;
$gettables = mysqli_query($connect,"SELECT * FROM $table");
$numrows = mysqli_num_rows($gettables);
return($numrows);
}
非常感谢您的支持
有两种可能的方式可用。
1.Passing $作为第二个参数连接到功能
include('config.php');
function rows($table,$connnect){
$gettables = mysqli_query($connect,"SELECT * FROM $table");
$numrows = mysqli_num_rows($gettables);
return($numrows);
}
-
声明$连接作为全局变量
function rows($table){ global $connect; $gettables = mysqli_query($connect,"SELECT * FROM $table"); $numrows = mysqli_num_rows($gettables); return($numrows); }
建议将$ connect作为参数传递给函数。不建议使用全局变量,请参考Are global variables in PHP considered bad practice? If so, why?
感谢信息伙计,我会使用全球,因为我的代码很简单,在其他项目中,我不会忘记你的话:),再次感谢 –
问题是你在全局范围声明了一个变量,但是全局范围中可用的任何东西都不会在函数范围中自动提供,除非你通过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做了类配置
尝试require_once代替包括 – Exprator
要么移动到类,将变量'连接'传递给函数,而不是包含它或使用'全球'关键字 – DarkBee
@Exprator我试过了,没有工作。 –