PHP fetchAll (PDO :: FETCH_ASSOC) возвращает нуль в выражении - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь получить данные, вставленные в мою базу данных, используя PDO::FETCH_ASSOC.

по какой-то причине (вероятно, из-за отсутствия понимания ...) Я не могу повторить данные из метода класса.

Это структура таблицы БД: enter image description here

Я хочу выполнить данные как ассоциативный массив $fieldName['value'] => $fieldVal['value']

У меня есть класс, который выбирает все данные из таблицы, сопоставляя значения tz и year. из печати _r внутри функции я получаю хорошие данные. Если я вызываю метод извне файла класса, я получаю все значения как нулевые.

Это мой код класса:

<code>function dataExist($tz, $year){
    $tz = 303748891;
    $year = 2017;
    $query = "SELECT * FROM ". $this->table_name ." WHERE tz = ? AND year = ?";

    $stmt = $this->conn->prepare($query);

    $stmt->bindParam(1, $tz);
    $stmt->bindParam(2, $year);

    // execute query
    $stmt->execute();

    //get all data
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);


    echo '<pre>';
    print_r( $result);
    echo '
'; вернуть $ результат; }

Это хороший результат, который я получаю в классе print_r.

Array
(
    [0] => Array
        (
            [id] => 45
            [tz] => 303748891
            [fieldName] => tel
            [fieldVal] => 0547
            [year] => 2017
        )

    [1] => Array
        (
            [id] => 77
            [tz] => 303748891
            [fieldName] => fname
            [fieldVal] => Jon
            [year] => 2017
        )

    [2] => Array
        (
            [id] => 78
            [tz] => 303748891
            [fieldName] => lname
            [fieldVal] => black
            [year] => 2017
        )

    [3] => Array
        (
            [id] => 79
            [tz] => 303748891
            [fieldName] => tel
            [fieldVal] => 5555-555-55
            [year] => 2017
        )

    [4] => Array
        (
            [id] => 80
            [tz] => 303748891
            [fieldName] => mail
            [fieldVal] => aaa@aaa.aaa
            [year] => 2017
        )

    [5] => Array
        (
            [id] => 81
            [tz] => 303748891
            [fieldName] => fname
            [fieldVal] => James
            [year] => 2017
        )

    [6] => Array
        (
            [id] => 82
            [tz] => 303748891
            [fieldName] => lname
            [fieldVal] => White
            [year] => 2017
        )

    [7] => Array
        (
            [id] => 83
            [tz] => 303748891
            [fieldName] => tel
            [fieldVal] => 6669-666-666
            [year] => 2017
        )

    [8] => Array
        (
            [id] => 84
            [tz] => 303748891
            [fieldName] => mail
            [fieldVal] => bbb@bbb.bbb
            [year] => 2017
        )

)

это вызов из другого файла:

<code>$dataExist = new Form($db);
$dataExist->dataExist($tz,$year);
echo '<pre>';
print_r( $dataExist);
echo '
';

Я получаю это:

Form Object
(
    [conn:Form:private] => PDO Object
        (
        )

    [table_name:Form:private] => submisions
    [id] => 
    [tz] => 
    [fieldName] => 
    [fieldVal] => 
    [year] => 
)

1 Ответ

0 голосов
/ 29 апреля 2018

Вы не присваиваете результаты вызова вашего метода переменной. Изменение

$dataExist->dataExist($tz,$year); 

до

$thedata = $dataExist->dataExist($tz,$year);

тогда

print_r($thedata);

и вы увидите, что ожидаете.

...