【问题标题】:How can I extract the value of an array key in PHP for MySQL query如何在 PHP 中为 MySQL 查询提取数组键的值
【发布时间】:2012-10-30 03:33:03
【问题描述】:

我在这里有一个 SQL 查询来从数据库中获取课程信息。变量courses是上一页Session保存的数组。这是 courses[] 如果我 var_dump 的样子。我选择了 3 门课程放入课程中。

array(3) 
{ 
[0]=> string(7) "CAD8405" 
[1]=> string(7) "CON8413" 
[2]=> string(7) "ENG8328" 
}

我的$selectedYear 变量在 2012 年到 2014 年之间变化。也由会话保存。下面是我遇到问题的地方。我的查询很好,不需要检查。我无法让$courseCode 显示为我的Course.CourseCode='$courseCode',因此我的查询不起作用。

这就是我发现它有点令人困惑的地方。 $courses 数组返回一个普通数组。但是当我做$courses[0] = $courseCode; 然后var_dump($courseCode) = null 这让我相信我需要的数据作为我的课程ID 是$courses[] 数组的键。当尝试访问$courses[1] 时,代码认为它是一个多维数组,其中键作为第一个数据。但我可能错了 有没有更好的方法来提取我的数组的键?

for($i = 0; $i < count($courses); $i++)
{
    //$courses[$i] = $courseCode;
    $courseCode = $courses[$i];
    $comfirmationString = "SELECT Course.CourseCode, Course.Title, Course.WeeklyHours, Semester.SemesterCode FROM Course, Semester, CourseOffer
    WHERE Semester.YearNum='$selectedYear' AND Course.CourseCode='$courseCode'
    AND Course.CourseCode=CourseOffer.CourseCode AND Semester.SemesterCode=CourseOffer.SemesterCode";

if($comfirmationResult = mysqli_query($link, $comfirmationString))
    {
        while($row = mysqli_fetch_assoc($comfirmationResult))
        {
            echo "<tr><td>$row[CourseCode]</td><td>$row[Title]</td><td>$row[WeeklyHours]</td><td>$row[SemesterCode]</td></tr>";
        }
    }
    else
    {
        echo "<p>Query error: " + mysqli_error($link) + "</p>";
    }
}

下面是显示我如何保存$courses[] 变量的代码:我得到查询的结果,如果选中该复选框,则此 courseID 将被放入courses[] 数组中。

if($Result2013 = mysqli_query($link, $string2013))
    {
        echo "<form action='CourseSelection.php' method='get'>
        <table><tr><th>Code</th><th>Course Title</th><th>Hours</th><th>Term</th><th>Select</th></tr>";
        while($row2013 = mysqli_fetch_assoc($Result2013))
        {
            echo "<tr><td>$row2013[CourseCode]</td><td>$row2013[Title]</td><td>$row2013[WeeklyHours]</td>
            <td>$row2013[Term]</td><td><input type='checkbox' name='courses[]' value=$row2013[CourseCode]></td></tr>";
        }
        echo "</table>";
    }

【问题讨论】:

    标签: php mysql arrays key


    【解决方案1】:

    您可能希望修改查询以将复合值关联到更易于阅读的值,如下所示:

    $comfirmationString = "SELECT Course.CourseCode as courseCode, Course.Title as courseTitle, Course.WeeklyHours as courseWeeklyHours, Semester.SemesterCode as semesterCode FROM Course, Semester, CourseOffer
    WHERE Semester.YearNum='$selectedYear' AND Course.CourseCode='$courseCode'
    AND Course.CourseCode=CourseOffer.CourseCode AND Semester.SemesterCode=CourseOffer.SemesterCode";
    

    您还需要将变量括在括号中,如下所示:

    echo "<tr><td>{$row['CourseCode']}</td><td>{$row['courseTitle']}</td><td>{$row['courseWeeklyHours']}</td><td>$row[SemesterCode]</td></tr>";
    

    等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 2014-06-23
      • 1970-01-01
      • 2017-12-11
      • 2020-10-06
      • 2013-10-22
      • 2010-11-01
      相关资源
      最近更新 更多