include one — получение ошибки при использовании функции, определенной внутри php-файла, из другого php-файла

Скажем, у меня есть php-файл с именем functions.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");

?>

и другой php-файл с именем db_connect.php как показано ниже:

<?php
$db = mysqli_connect("localhost","root","","sms1") or die(mysqli_connect_error());
?>

Теперь я хочу использовать get_option_list() метод из другого php-файла с именем my_view.php следующим образом:

<?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

Но при вызове get_option_list() от functions.php Сам файл, такие ошибки не появляются, и я вижу ожидаемый результат.
В чем я сомневаюсь, так это в том, что в моем коде есть проблема, которая не может правильно обрабатывать значения, передаваемые из одного файла в другой. Может кто-нибудь помочь мне здесь?

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

Другие решения

Вы должны использовать $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)
1

По вопросам рекламы [email protected]