mysqli_fetch_assoc ТОЛЬКО возвращает второй элемент массива даже с итерацией

avatar
ThisWasHer
8 апреля 2018 в 04:49
93
1
1

Это мой код:

$query2 = "select * from teaches where teacherid_fk LIKE '$teacherid_fk'";
$userinfo2 = mysqli_query($conn, $query2);
while ($line = mysqli_fetch_assoc($userinfo2)) {echo json_encode($line);}

Почему-то я получаю только один массив вместо двух. Мне нужно, чтобы отображались оба массива, но мой код отображает только второй массив. Это БД: dbTableofTeaches

Я делаю что-то не так? Только недавно изучил PHP, и любая помощь очень ценится. :)

EDIT 2: Если я сделаю такой код:

$query2 = "select * from teaches where teacherid_fk LIKE '$teacherid_fk'";
$userinfo2 = mysqli_query($conn, $query2);
$row = mysqli_fetch_array($userinfo2);
echo json_encode($row);

Результат следующий: {"teaches_id":"2","teacherid_fk":"1","subjectid_fk":"65","quarterid_fk":"1","gradeid_fk":"5"," sectionid_fk":"13","schoolyearid_fk":"2"} [это первый массив, который я искал!]

EDIT 3: Хорошо, я все больше запутался. Я попытался отредактировать базу данных, и теперь она выглядит так: dbTableOfTeaches2. С тем же (первым) кодом выше я обновил страницу, и теперь отображаются второй и третий массивы, но до сих пор нет признаков первого массива! Единственный способ, которым я смог отобразить первый массив был использован второй код выше.

Источник
chris85
8 апреля 2018 в 05:01
0

Как вы читаете ответ? Должны быть две строки JSON echod. Вы также, кажется, открыты для SQL-инъекций, параметризируйте свой запрос. Я также использовал бы =, а не like при поиске точного совпадения.

ThisWasHer
8 апреля 2018 в 05:48
0

chris85 спасибо за предложения. Что касается вашего вопроса, все, что я вижу на своей странице, это: {"teaches_id":"2","teacherid_fk":"1","subjectid_fk":"55","quarterid_fk":"1","gradeid_fk ":"5","sectionid_fk":"13","schoolyearid_fk":"2"}

Ответы (1)

avatar
Klodian
8 апреля 2018 в 06:46
0

попробуй это.

$query2 = "select * from teaches where teacherid_fk = '$teacherid_fk'";
$userinfo2 = mysqli_query( $conn, $query2 );

$respons = array();

while ( $line = mysqli_fetch_assoc( $userinfo2 ) ) {

    $respons[] = $line;

}

echo json_encode($respons);
ThisWasHer
8 апреля 2018 в 06:51
0

По-прежнему отображает второй массив. Нет признака первого массива. [Я начинаю чувствовать, что PHP меня ненавидит. Ха-ха, шучу.]

ThisWasHer
8 апреля 2018 в 07:18
0

Я проверил это в phpmyadmin, и он действительно извлек две строки. См. исправленный «новый» (EDIT 2) код выше — я исправил его недавно.