Php MySQL选择逻辑
所以我现在正在做一项作业,我无法理解其中的逻辑 我必须在HTML选择框中填充基于资格代码的课程列表,其中用户尚未注册课程 这是我目前的代码:Php MySQL选择逻辑,php,mysql,database,Php,Mysql,Database,所以我现在正在做一项作业,我无法理解其中的逻辑 我必须在HTML选择框中填充基于资格代码的课程列表,其中用户尚未注册课程 这是我目前的代码: //Get logged in users id $currentID = getIDForUser($_SESSION['username']); //Get logged in users qualification code $qualificationCode = getUserQualification($currentID); //Get a
//Get logged in users id
$currentID = getIDForUser($_SESSION['username']);
//Get logged in users qualification code
$qualificationCode = getUserQualification($currentID);
//Get and display list of avaliable courses for qualificationCode
$query = mysql_query("");
while($row = mysql_fetch_array($query)) {
$courseName = $row['courseName'];
$courseCode = $row['courseCode'];
print("<option value='$courseCode'>$courseName</option>");
}
//登录用户id
$currentID=getIDForUser($_会话['username']);
//获取登录用户资格代码
$qualificationCode=getUserQualification($currentID);
//获取并显示资格代码的可用课程列表
$query=mysql\u query(“”);
while($row=mysql\u fetch\u array($query)){
$courseName=$row['courseName'];
$courseCode=$row['courseCode'];
打印($courseName);
}
数据库的布局如下所示
课程表:
课程发生率表:
因此,基本上在这个阶段,组合框将填充多媒体和设计以及数据结构和算法。但是,如果我选择多媒体并注册,它将不再在方框中填充该课程
mysqli.*
或PDOlatin1\u swedish\u ci
更改为utf8\u general\u ci
,否则,如果您决定在数据库中放置特殊字符,您将面临问题SELECT
查询之外的所有内容。因此,首先要选择当前用户注册的所有课程。然后,根据结果,您希望获取不在您刚才选择的列表中的所有课程。
这可以通过一个子选择相当容易地完成: SQL解释: 我认为
选择
,来自
,其中
和不
不需要解释。IN
检查值是否在类似于('a','B','C')中的'a'的列表中
(SELECT…
是一个所谓的subselect(请参阅),它是一个简单的SELECT
,您可以在查询中使用它的结果,如果它只有一列(因为我们只选择courseCode
),它可以用作中的参数
这句话的意思是什么?但是,如果我选择多媒体并注册,它将不再使用该课程填充框。因此,使用数据库中的当前数据(用户尚未注册任何一个可用课程),框中将填充两个课程。但是,如果用户决定参加多媒体与设计课程,下次填充该列表时,它将仅在框中显示数据结构课程。为此,您需要通过查询检查用户已注册的课程,然后在显示之前提取这些课程。如果您在下拉列表中未获得该列表,则说明您的查询有问题,您没有发布该问题。我不知道为什么你会在mysql问题上排除查询。我想说的是,重要的一点是不要使用最终会消失的API,因为你的代码会崩溃。不使用预先准备好的语句就可以编写完全安全且工作正常的代码,但当您的API消失后,同样的事情就不可能发生了。但当然,我同意,人们应该总是使用事先准备好的陈述。相应地更新了我的答案。
// Assuming $mysqli is an OOP database handle
$query = $mysqli->prepare('SELECT `courseName`, `courseCode` FROM `Courses` WHERE `courseCode` NOT IN (SELECT `courseCode` FROM `Courseoccurrence` WHERE `personID` = ?)');
$query->bind_param('i', $currentID);
$result = $query->get_result();
while($row = $result->fetch_array())
// ...