#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
вместо этого для отладки и посмотрите, что вы получите