php - 在 foreach 循环中使用 SQL 结果

标签 php mysql foreach

我觉得我在这里遗漏了一些非常明显的东西,我正在尝试获取 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>";
    }
}
?>

任何帮助将不胜感激

最佳答案

您必须先将结果提取到一个数组中。看起来您开始执行此操作但将其注释掉了。

$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...

关于php - 在 foreach 循环中使用 SQL 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8538511/

相关文章:

php - 在 JavaScript 中导出变量

mysql - 从一个表中选择包含另一个表中一长串单词中的任何单词的行

c++ - 'for_each_n'不是C++ 17中 'std'的成员

html - 我们如何在 JSTL 中迭代 HashMap?

c# - 如何使用 C# 'foreach' DataTable 中的列?

php - 当我想在 MYSQL 中插入克罗地亚语字母 (č,ć,š,đ,ž) 时,我的函数有什么问题

允许换行的 PHP 正则表达式不起作用

php - C 中给出的警告 : fgetcsv() expects parameter 1 to be resource, bool 值:

带范围过滤器的 PHP 搜索查询

MySQL (innodb) 防止循环引用