У меня есть вопрос, касающийся функций PHP. Гуглил все вокруг, но не смог найти удовлетворительного ответа на мою проблему.
Я пытаюсь получить значения из цикла foreach, который находится внутри самодельной функции:
function get_gemeente_by_id($gemeente_id)
{
global $db;
// Omzetten van integer (id) naar string (name)
$query = $db->prepare("SELECT * FROM gemeenten WHERE id = {$gemeente_id}");
$query->execute();
foreach($query->fetchAll(PDO::FETCH_OBJ) as $gemeente)
{
$district = $gemeente->district;
$congregation = $gemeente->gemeente;
}
}
Выполнение запроса прямо на верхушке страницы работает нормально. Но я хочу использовать значения, созданные в моей функции, чтобы отобразить это так:
Я называю свою функцию:
get_gemeente_by_id($_SESSION['gemeente_id']);
и хотите вывести значения из запроса внутри функции.
<?= $district; ?> and <?= $congregation; ?>
Я получаю сообщение об ошибке: «Примечание: неопределенная переменная: район в HTTP: // локальный / и т.д.«
Hpe кто-то может мне помочь. Я не пишу много кода на своих страницах и пытаюсь с помощью функции сделать это.
Заранее спасибо.
Вы должны вернуть массив своей функцией попробуйте это:
function get_gemeente_by_id($gemeente_id)
{
global $db;
$arr = array()
// Omzetten van integer (id) naar string (name)
$query = $db->prepare("SELECT * FROM gemeenten WHERE id = {$gemeente_id}");
$query->execute();
foreach($query->fetchAll(PDO::FETCH_OBJ) as $gemeente)
{
$arr['district'][] = $gemeente->district;
$arr['congregation'][] = $gemeente->gemeente;
}
return $arr
}
и когда вы вызываете функцию:
$arr = get_gemeente_by_id($_SESSION['gemeente_id']);
foreach ($arr as $dist_con=>$b){
foreach($b as $a=>$c){
echo $dist_con.$a."=".$c
}
echo "<br>";
}
Вот вам решение:
// get_gemeente_by_id function
function get_gemeente_by_id($gemeente_id)
{
global $db;
$query = $db->prepare("SELECT * FROM gemeenten WHERE id =?;");
$query->execute(array($gemeente_id));
return $query->fetchAll(PDO::FETCH_ASSOC);
}
// Call to function and get associative array with expected data
$arr = get_gemeente_by_id($_SESSION['gemeente_id']);
foreach ($arr as $dist_con=>$b){
foreach($b as $a=>$c){
echo $dist_con.$a."=".$c
}
echo "<br>";
}