我知道你是php的新手,我有一些问题(比如任何新的开始)我的问题是我不能将config.php
这样的文件包含在文件中的所有函数中
我只有3个文件
在config.php
中的我只是连接到mysqli中的数据库,变量是$connect
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
。
由于
答案 0 :(得分:4)
$ connect存在于'config.php'中。
在你的函数中,将$ connect声明为'global',即:它存在于此函数范围之外。
function rows($table){
global $connect;
$gettables = mysqli_query($connect,"SELECT * FROM $table");
$numrows = mysqli_num_rows($gettables);
return($numrows);
}
答案 1 :(得分:4)
有两种可行的方法可供选择。
1.Passing $ connect作为函数的第二个参数
include('config.php');
function rows($table,$connnect){
$gettables = mysqli_query($connect,"SELECT * FROM $table");
$numrows = mysqli_num_rows($gettables);
return($numrows);
}
将$ connect声明为全局变量
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?
答案 2 :(得分:3)
问题是你在全局范围内声明一个变量,但是在全局范围内可用的任何内容都不会在函数范围内自动提供,除非你强制它通过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);
}
答案 3 :(得分:0)
你需要在你的函数中启动一个新的对象配置,并使用constructer来连接到这样的数据库
$c=new config();
$con=$c->connect();
$req="SELECT * FROM table";
$conn=$con->query($req);
如果你在config.php
中完成了一个类配置,这是有效的