почему из запроса mysql возвращается только одна строка

#php #mysql

#php #mysql

Вопрос:

У меня есть этот запрос:

 mysql_query( "SELECT tre.TrainerEducationID, tge.EducationName, tre.EducationNote
              FROM trainereducation tre
              INNER JOIN trainingeducation tge ON 
                (tre.EducationID = tge.EducationID)
              WHERE tre.TrainerID = '$id'" );
  

По-видимому, возвращается только одна строка, хотя в таблице TrainerEducation более 2 строк.
Почему это?
Разве это не должно возвращать более одной строки?

Комментарии:

1. Как вы извлекаете строки? Вам нужно извлекать каждую строку, пока она не вернет false, тогда вы узнаете, что строк больше нет.

2. ооо, я c, так что каждая выборка получает только одну строку? и каждая строка является массивом?

3. это правильно — пожалуйста, посмотрите решение, которое я опубликовал.

4. Не забудьте использовать $id = mysql_real_escape_string($id) для защиты от атак с использованием SQL-инъекций.

Ответ №1:

Затем используйте:

 while ($row = mysql_fetch_array($result)) { // keep fetching until it returns false
    var_dump($row);
}
  

Как опубликовано на:
http://php.net/mysql_fetch_array

Комментарии:

1. я c, поэтому каждый вызов fetch получает только одну строку результирующего набора?

Ответ №2:

mysql_fetch_array извлекает только одну строку. Попробуйте выполнить это в цикле, подобном этому:

 $all_rows = array();
while($row = mysql_fetch_array($result)) {
  $all_rows[] = $row;
}
  

Ответ №3:

Возможно, ваши условия не совпадают, попробуйте использовать left join вместо этого для отладки и посмотрите, что вы получите