Я чувствую, что мне не хватает чего-то глупого очевидного здесь, я пытаюсь получить результаты SQL-запроса, а затем использовать их в цикле. Я чувствую, что мне не хватает чего-то глупого очевидного, я пробовал его с и без пропущенной строки.
<?php $sentToID = $_SESSION['userID']; $query = "SELECT * FROM messages WHERE sentToID = '$sentToID'"; $results = mysql_query($query); //$userData = mysql_fetch_array($results, MYSQL_ASSOC); foreach ($results as $result){ $messageID = $result['messageID']; $sentFromID = $result['sentFromID']; $subject = $result['subject']; $body = $result['body']; $dateTime = $result['dateTime']; $query = "SELECT usertype FROM user WHERE userID = '$sentFromID'"; $messageResult = mysql_query($query); $messageData = mysql_fetch_array($messageResult, MYSQL_ASSOC); $usertype = $messageData['usertype']; $query = "SELECT * FROM $usertype WHERE userID = '$sentFromID'"; $messageResult = mysql_query($query); $messageData = mysql_fetch_array($messageResult, MYSQL_ASSOC); if ($usertype == "jobseeker"){ $forname = $messageData['forename']; $surname = $messageData['surname']; echo "<div><p>" . $forename . " " . $surname . "</p> <p>Subject: " . $subject ."</p> <p>Body: " . $body . "</p></div>"; } if ($usertype == "employer"){ $forname = $messageData['forename']; $surname = $messageData['surname']; $companyName = $messageData['companyName']; echo "<div><p>" . $forename . " " . $surname . " - " . $companyName . "</p> <p>Subject: " . $subject ."</p> <p>Body: " . $body . "</p></div>"; } } ?>
Любая помощь будет принята с благодарностью
Вместо вашего foreach()
вы должны сделать что-то подобное (подробнее см. Страницу руководства mysql_query () ):
while($result = mysql_fetch_assoc($results)) { // your code }
Сначала вы должны получить результаты в массив. Похоже, вы начали это делать, но прокомментировали это.
$results = mysql_query($query); //$userData = mysql_fetch_array($results, MYSQL_ASSOC); $resultset = array(); while ($row = mysql_fetch_array($results)) { $resultset[] = $row; } // $resultset now holds all rows from the first query. foreach ($resultset as $result){ //... etc...
другой вариант
$num_rows = mysql_num_rows($result) for ($i=0;$i<$num_rows;$i++) { $row = mysql_fetch_assoc($result) $messageID = $row['messageID']; }
Вы можете сделать что угодно отсюда.
Помните, 1 запрос в объект, как $ result 2- выбор строки за один раз из объекта в массив, который отражает всю строку в таблице, заданную вашим определением запроса ассоциативными ключами или числовыми 3-сделать что-то с массивом
Вы прокрутите объект по строке и поместите в строку $ row в виде массива.
ура
У меня нет репутации для комментариев, и приведенные выше ответы верны, но на странице справочника php mysql_query () говорится, что
это расширение было устарело в PHP 5.5.0, и оно было удалено в PHP 7.0.0. Вместо этого следует использовать расширение MySQLi или PDO_MySQL.
Итак, теперь правильный путь:
while($result = mysqli_fetch_assoc($results)) { // your code }