2013-09-15 6 views
0

У меня есть этот бит кода, который ничего не производит, даже сообщение об ошибке. Я пытаюсь повторить результат внутри цикла while, но даже это ничего не показывает. Какие-нибудь советы?Выберите строку информации для каждого элемента массива

foreach($droppedStudentIds as $value){ 

     $query3 = "select * from student_classlists where StudentId = '$value' and ClassListDate = (select max(ClassListDate) from student_classlists)";  

     if($result = mysqli_query($mysqli, $query3)) { 

      while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 

       echo "Date: ".$row['ClassListDate']; 

       $droppedStudentIds[$value][] = $row['ClassListDate']; 

      } 

     mysqli_free_result($result); 

     } else die ("Could not execute query 3"); 

} 

Моя цель - найти информацию о дате для каждого элемента внутри массива $ dropsStudentIds. Я сам проверил запрос MySQL и дал желаемый результат.

Спасибо!

+2

Единственное объяснение состоит в том, что ваш запрос фактически не возвращает никаких строк. Попробуйте повторить «$ query3», а затем вставьте этот запрос в phpmyadmin или mysql. – Barmar

+1

ClassListDate пуст? –

ответ

0

Спасибо всем за отзыв, это помогло зафиксировать ошибку!

  1. Нет необходимости в цикле в то время как при запросе одной записи
  2. запрос был на самом деле неверно. Подзапрос получал максимальную дату в базе данных, независимо от того, присутствовал ли StudentId или нет. Правильный запрос состоит в следующем:

    выберите ClassListDate из student_classlists где StudentId = '$ значения' и ClassListDate = (выбрать макс (ClassListDate) от student_classlists где StudentId = '$ значения')

Еще раз спасибо !

1

Вы присваивание массива вы Перебор на этой линии:

$droppedStudentIds[$value][] = $row['ClassListDate']; 

Это может быть причиной вашего сценария для тайм-аута, который был бы, почему вы не видите никаких выходных данных.

Я бы добавил второй массив, чтобы избежать конфликтов и использовать его для хранения результатов запроса, например.

$temp[$value] = $row['ClassListDate']; 
+0

Спасибо @ Daniel, я попробовал ваше предложение, но я получаю ошибку «неопределенной переменной» для $ temp. Хм, я должен упустить что-то очевидное ... – Levi

+0

Это только предупреждение о инициализации. Прежде чем вводить цикл, добавьте строку '$ temp = array();' – xyz

Смежные вопросы