【问题标题】:Getting error when using a function defined inside a php-file from another php-file使用来自另一个 php 文件的 php 文件中定义的函数时出错
【发布时间】:2018-01-01 11:20:15
【问题描述】:

说,我有一个名为 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() 时,没有出现此类错误,我可以看到预期的输出。 我怀疑我的代码中存在一些问题,无法处理从一个文件正确传递到另一个文件的值。有谁能帮帮我吗?

【问题讨论】:

    标签: php include-once


    【解决方案1】:

    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"); ?>
    

    【讨论】:

      【解决方案2】:

      您必须将$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;
          }
      

      可以使用MedooMeekroDB等PHP数据库库...

      否则,您必须将$db 作为参数传递。

      get_option_list($db, $table, $col_id, $col_value, $sel=0)
      

      【讨论】:

      • 感谢@Manpreet 的反馈!您能否让我知道在这种情况下这里的良好做法是什么?
      猜你喜欢
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2015-02-04
      • 2017-03-17
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多