使用来自另一个 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"); ?>