使用来自另一个 php 文件的 php 文件中定义的函数时出错
Getting error when using a function defined inside a php-file from another php-file
说,我有一个名为 functions.php
的 php 文件,如下所示:
<?php
include_once("db_connect.php");
### function to populate the City/State/Country drop-downs ###
function get_option_list($table,$col_id,$col_value,$sel=0){
$SQL = "SELECT * FROM $table";
$rs = mysqli_query($db,$SQL) or die(mysqli_error());
$option_list = "<option value='0'>Please select...</option>";
while($data = mysqli_fetch_assoc($rs)){
$option_list.= "<option value='$data[$col_id]'>$data[$col_value]
</option>";
}
return $option_list;
}
//echo get_option_list("city","city_id","city_name");
//echo get_option_list("state","state_id","state_name");
//echo get_option_list("country","country_id","country_name");
?>
和另一个名为 db_connect.php
的 php 文件如下:
<?php
$db = mysqli_connect("localhost","root","","sms1") or die(mysqli_connect_error());
?>
现在,我想通过以下方式使用另一个名为 my_view.php
的 php 文件中的 get_option_list()
方法:
<?php include_once("functions.php"); ?>
<form>
<select>
<?php echo get_option_list("city","city_id","city_name"); ?>
</select>
</form>
准备好所有这些文件后,每当我 运行 my_view.php
文件时,我都会收到如下错误:
Notice: Undefined variable: db in C:\xampp\htdocs\sms1\includes\functions.php on line 7
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\sms1\includes\functions.php on line 7
Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\xampp\htdocs\sms1\includes\functions.php on line 7
但是,当从 functions.php
文件本身调用 get_option_list()
时,没有出现此类错误,我可以看到预期的输出。
我怀疑我的代码中存在一些问题,无法正确处理从一个文件传递到另一个文件的值。有人可以帮我吗?
您必须使用 $db
作为全局,但这不是好的做法。
function get_option_list($table, $col_id, $col_value, $sel=0){
global $db;
$SQL = "SELECT * FROM $table";
$rs = mysqli_query($db,$SQL) or die(mysqli_error());
$option_list = "<option value='0'>Please select...</option>";
while($data = mysqli_fetch_assoc($rs)){
$option_list.= "<option value='$data[$col_id]'>$data[$col_value]
</option>";
}
return $option_list;
}
你可以使用PHP数据库库如Medoo, MeekroDB等...
否则,您必须将 $db
作为参数传递。
get_option_list($db, $table, $col_id, $col_value, $sel=0)
方法get_option_list没有传递$db值的参数。
你可以包括它:
function get_option_list($db, $table, $col_id, $col_value, $sel=0) {
然后传过去:
<?php echo get_option_list($db, "city","city_id","city_name"); ?>
说,我有一个名为 functions.php
的 php 文件,如下所示:
<?php
include_once("db_connect.php");
### function to populate the City/State/Country drop-downs ###
function get_option_list($table,$col_id,$col_value,$sel=0){
$SQL = "SELECT * FROM $table";
$rs = mysqli_query($db,$SQL) or die(mysqli_error());
$option_list = "<option value='0'>Please select...</option>";
while($data = mysqli_fetch_assoc($rs)){
$option_list.= "<option value='$data[$col_id]'>$data[$col_value]
</option>";
}
return $option_list;
}
//echo get_option_list("city","city_id","city_name");
//echo get_option_list("state","state_id","state_name");
//echo get_option_list("country","country_id","country_name");
?>
和另一个名为 db_connect.php
的 php 文件如下:
<?php
$db = mysqli_connect("localhost","root","","sms1") or die(mysqli_connect_error());
?>
现在,我想通过以下方式使用另一个名为 my_view.php
的 php 文件中的 get_option_list()
方法:
<?php include_once("functions.php"); ?>
<form>
<select>
<?php echo get_option_list("city","city_id","city_name"); ?>
</select>
</form>
准备好所有这些文件后,每当我 运行 my_view.php
文件时,我都会收到如下错误:
Notice: Undefined variable: db in C:\xampp\htdocs\sms1\includes\functions.php on line 7
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\sms1\includes\functions.php on line 7
Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\xampp\htdocs\sms1\includes\functions.php on line 7
但是,当从 functions.php
文件本身调用 get_option_list()
时,没有出现此类错误,我可以看到预期的输出。
我怀疑我的代码中存在一些问题,无法正确处理从一个文件传递到另一个文件的值。有人可以帮我吗?
您必须使用 $db
作为全局,但这不是好的做法。
function get_option_list($table, $col_id, $col_value, $sel=0){
global $db;
$SQL = "SELECT * FROM $table";
$rs = mysqli_query($db,$SQL) or die(mysqli_error());
$option_list = "<option value='0'>Please select...</option>";
while($data = mysqli_fetch_assoc($rs)){
$option_list.= "<option value='$data[$col_id]'>$data[$col_value]
</option>";
}
return $option_list;
}
你可以使用PHP数据库库如Medoo, MeekroDB等...
否则,您必须将 $db
作为参数传递。
get_option_list($db, $table, $col_id, $col_value, $sel=0)
方法get_option_list没有传递$db值的参数。
你可以包括它:
function get_option_list($db, $table, $col_id, $col_value, $sel=0) {
然后传过去:
<?php echo get_option_list($db, "city","city_id","city_name"); ?>