Скажем, у меня есть 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
Сам файл, такие ошибки не появляются, и я вижу ожидаемый результат.
В чем я сомневаюсь, так это в том, что в моем коде есть проблема, которая не может правильно обрабатывать значения, передаваемые из одного файла в другой. Может кто-нибудь помочь мне здесь?
Метод 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"); ?>
Вы должны использовать $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)