2017-01-24 5 views
0

Не знаю, как задать этот вопрос.Невозможно использовать переменную, объявленную в функции внутри другой функции

Я работал над настройкой класса для обработки взаимодействия с базой данных и имел странное взаимодействие проходящих переменных. Я должен что-то упустить.

У меня есть класс DataBaseAPI У меня есть функция QueryDB($value), которая будет вызываться другими функциями. Но у меня есть проблема с тем, что я объявляю, что $value внутри другой функции. Пример:

Работа

include_once('DataBaseAPI.php'); 
$DB = new DataBaseAPI(); 

$test = $DB->QueryDB('id'); 
echo $test; 

не работают

include_once('DataBaseAPI.php'); 
$DB = new DataBaseAPI(); 

$test = $DB->getId(); 
echo $test; 

Начала класса в DataBaseAPI.php

class DataBaseAPI { 


    public function getId(){ 
    //the same function defined the same way but needing to use $this 
    $this->QueryDB('id');//seems like a waste here but is for ease of use later on 
    } 


    public function QueryDB($value){ 
    echo $value; //echo's id 
    global $conn; 
    $token = '7ci4f8ykfik3ndzufksy1dp16x3na4'; //Test Token not a real token 
    $doesExists = "SELECT $value FROM user_info WHERE token='$token'"; 
    $existsResult = mysqli_query($conn, $doesExists); 
    $check = $existsResult->fetch_assoc(); 
    return $check[$value]; 
    } 
} 

Я даже проверил с эхом $value в QueryDB($value) эхе id так же, как при вызове f прямо.

Я просто не понимаю, почему первый метод работает, но второй метод этого не делает, но я все равно называю его таким же образом. Просто внутри другой функции.

ответ

1

Верните результат getId(), чтобы сохранить в своем $test. У

public function getId(){ 
    return $this->QueryDB('id');//seems like a waste here but is for ease of use later on 
    } 

вместо

public function getId(){ 
    $this->QueryDB('id');//seems like a waste here but is for ease of use later on 
    } 
+1

о. haha сделать с тех пор, когда кто-то сказал это. Спасибо за быстрый ответ! – bigbaddevil7

Смежные вопросы