Из БД не выводятся таблицы с id > 10

Вывожу данные из таблицы таким образом: (фаил Function.php)

function get_tests(){
    global $db;
    $query = "SELECT * FROM test WHERE enable = '1'";
    $res = mysqli_query($db, $query);
    if(!$res) return false;
    $data = array();
    while($row = mysqli_fetch_assoc($res)){
        $data[] = $row;
    }
    return $data;
}

/**
* получение данных теста
**/
function get_test_data($test_id){
    if( !$test_id ) return;
    global $db;
    $query = "SELECT q.question, q.parent_test, a.id, a.answer, a.parent_question, q.correct_answer
        FROM questions q
        LEFT JOIN  answers a
            ON q.id = a.parent_question
        LEFT JOIN test
            ON test.id = q.parent_test
                WHERE q.parent_test = $test_id AND test.enable = '1'
                ORDER BY rand()
";
    $res = mysqli_query($db, $query,);
    $data = null;
    while($row = mysqli_fetch_assoc($res)){
        if( !$row['parent_question'] ) return false;
        $data[$row['parent_question']][0] = $row['question'];
        $data[$row['parent_question']][1] = "0%";
        $data[$row['parent_question']][2] = "25%";
        $data[$row['parent_question']][3] = "50%";
        $data[$row['parent_question']][4] = "75%";
        $data[$row['parent_question']][5] = "100%";
        $data[$row['parent_question']]["correct_answer"] = $row[ 'correct_answer'];
    }
    return $data;
}

    function get_correct_answers($test) {
        if( !$test ) return false;
        global $db;
        $query = "SELECT q.id AS question_id, a.id AS answer_id, q.correct_answer
            FROM questions q
            LEFT JOIN answers a
                ON q.id = a.parent_question
            LEFT JOIN test
                ON test.id = q.parent_test
                    WHERE q.parent_test = $test AND a.correct_answer = '1' AND test.enable = '1'";
        $res = mysqli_query ($db, $query);
        $data = null;
        while($row = mysqli_fetch_assoc($res)){
            $data[$row['question_id']] = $row['correct_answer'];
        }
        return $data;
    }

Добавляю в БД записи (Через phpMyAdmin):

INSERT INTO `questions` (`id`, `question`, `parent_test`, `correct_answer`) VALUES
(1, 'Первая', 1, 1),
(2, 'Вторая', 1, 1),
(3, 'Третья', 1, 1),
(4, 'Четвертая', 1, 1),
(5, 'Пятая', 1, 1),
(6, 'Шестая', 1, 1),
(7, 'Седьмая', 1, 1),
(8, 'Восьмая', 1, 1),
(9, 'Девятая', 1, 1),
(10, 'Десятая', 1, 1),
(11, 'Одинадцатая', 1, 1);

Вывожу в индексном файле:

<?php print_arr($test_data) ?>

В ответ получаю пустоту, НО если убираю 11 пункт - получаю:

Array
(
    [2] => Array
        (
            [0] => Вторая
            [1] => 0%
            [2] => 25%
            [3] => 50%
            [4] => 75%
            [5] => 100%
            [correct_answer] => 1
        )

    [5] => Array
        (
            [0] => Пятая
            [1] => 0%
            [2] => 25%
            [3] => 50%
            [4] => 75%
            [5] => 100%
            [correct_answer] => 1
        )

    [3] => Array
        (
            [0] => Третья
            [1] => 0%
            [2] => 25%
            [3] => 50%
            [4] => 75%
            [5] => 100%
            [correct_answer] => 1
        )

    [6] => Array
        (
            [0] => Шестая
            [1] => 0%
            [2] => 25%
            [3] => 50%
            [4] => 75%
            [5] => 100%
            [correct_answer] => 1
        )

    [10] => Array
        (
            [0] => Десятая
            [1] => 0%
            [2] => 25%
            [3] => 50%
            [4] => 75%
            [5] => 100%
            [correct_answer] => 1
        )

    [1] => Array
        (
            [0] => Первая
            [1] => 0%
            [2] => 25%
            [3] => 50%
            [4] => 75%
            [5] => 100%
            [correct_answer] => 1
        )

    [9] => Array
        (
            [0] => Девятая
            [1] => 0%
            [2] => 25%
            [3] => 50%
            [4] => 75%
            [5] => 100%
            [correct_answer] => 1
        )

    [4] => Array
        (
            [0] => Четвертая
            [1] => 0%
            [2] => 25%
            [3] => 50%
            [4] => 75%
            [5] => 100%
            [correct_answer] => 1
        )

    [7] => Array
        (
            [0] => Седьмая
            [1] => 0%
            [2] => 25%
            [3] => 50%
            [4] => 75%
            [5] => 100%
            [correct_answer] => 1
        )

    [8] => Array
        (
            [0] => Восьмая
            [1] => 0%
            [2] => 25%
            [3] => 50%
            [4] => 75%
            [5] => 100%
            [correct_answer] => 1
        )

)

Если ID записи до 10 (включительно) - всё выводится, но если появляется 11 - var_damp ничего не возвращает. То есть, если ID пишу любой выше 10 - ничего не возвращается.

Структура ID - int(10) UNSIGNED AI

P.S. Гуглил уже всё, что можно. Такое ощущение сложилось, что подобной ошибки ни у кого не бывает.


Ответы (1 шт):

Автор решения: Akina

Вот один из запросов из кода:

SELECT q.id AS question_id, a.id AS answer_id, q.correct_answer
FROM questions q
LEFT JOIN answers a ON q.id = a.parent_question
LEFT JOIN test ON test.id = q.parent_test
WHERE q.parent_test = $test AND a.correct_answer = '1' AND test.enable = '1'

Запрос - неверный. Он превращает LEFT JOIN в INNER JOIN - следует ли удивляться, что результат далёк от желаемого?

Должно быть

SELECT q.id AS question_id, a.id AS answer_id, q.correct_answer
FROM questions q
LEFT JOIN answers a ON q.id = a.parent_question AND a.correct_answer = '1'
LEFT JOIN test ON test.id = q.parent_test AND test.enable = '1'
WHERE q.parent_test = $test
→ Ссылка