おはようございます。 私はこのコードスニペットを目的としています。これは、このユーザーが登録されているコースに基づいて受験できる資格試験を表示することです。以前に書いたことがある場合は、試験の名前、使用可能な日付、合格グレード、試験を受けるリンク、または結果が表示されます。PHPを使用してWebページにリンクを動的に表示する方法
/*Connection String */
global $con;
$user_id = $_SESSION['user_id']; //user id
$courses = parse_course($user_id); //parse course gets the list of registered courses (Course Codes) in an array
foreach ($courses as $list)
{
$written = false;
$list = parse_course_id($list); //parse_course_id gets the id for each course
$ers = mysqli_query($con, "Select * from exams where course_id = '$list'");
while ($erows = mysqli_fetch_assoc($ers)) {
$trs = mysqli_query($con, "Select * from result_data where user_id = '$user_id'");
while ($trows = mysqli_fetch_assoc($trs)) {
if ($trows['user_id'] == $user_id && $trows['exam_id'] == $erows['exam_id'])
$written = true;
else
$written = false;
}
if($written)
{
echo "<tr><td>".$erows['exam_name']."</td><td>".$erows['exam_from']." To ".$erows['exam_to']."</td><td>".$erows['passing_grade']."%</td><td><a href=proc_result.php?id=".$erows['exam_id'].">".'View Result '."</a></td></tr>";
$written = false;
}
else
{
echo "<tr><td>".$erows['exam_name']."</td><td>".$erows['exam_from']." To ".$erows['exam_to']."</td><td>".$erows['passing_grade']."%</td><td><a href=Exam3.php?id=".$erows['exam_id'].">".'Take Exam '."</a></td></tr>";
$written = false;
}
}
}
ただし、複数の試験を受験した場合でも、1つの結果を表示します。最近のエントリーを示しています。どうしたらいいですか?
理由** WARNING **:使用 'mysqli'あなたがすべき[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と['bind_param'](http://php.net/manual/en/mysqli- stmt.bind-param.php)を使用してユーザーデータをクエリに追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'や' $ _GET'データを直接クエリに入れないでください。誰かがあなたのミスを悪用しようとすると、非常に危険です。 – tadman
ポイント取る。私はすぐにそれを変更します。ありがとう@タッドマン。 – Andromadus
'WHERE'節でその値の行だけを特に要求しているので、なぜ行の' user_id'列を '$ user_id'変数と比較しているのか分かりません。 – tadman