0

我正在使用较小的函数来尝试调试较大函数的内部连接。我是一个新手,几乎没有使用连接的经验。事实上,我只是在两三天前才开始尝试使用内部连接作为我对连接的第一次体验。较小的函数如下:

$data3 = '\'' . implode('\', \'', $posted_email) . '\'';
echo "post email var dump:   ";
var_dump($posted_email);
$exam_recordation = mysql_query("SELECT Student_email FROM exam WHERE partner_id IN (SELECT partner_id FROM exam WHERE Student_email = $data3) AND Student_email <> $data3");
echo "<br>recordation query:   ";
echo "SELECT Student_email FROM exam WHERE partner_id IN (SELECT partner_id FROM exam WHERE Student_email = $data3) AND Student_email <> $data3";
echo "<br>recordation var dump:   ";
var_dump($exam_recordation);
echo "<table border=='1'>
<tr>
<th>Name</th>
</tr>";
while ($fetch_record = mysql_fetch_array($exam_recordation))
{
    echo "<tr>";
    echo "<td>" . $fetch_record['Student_email'] . "</td>";
    echo "</tr>";
}
echo "</table>";
//inner join should use the email of the partner out of $exam query to find their name and print it
$name_query = mysql_query("SELECT DISTINCT student.name
              FROM student
              INNER JOIN exam ON student.email = exam.Student_email
              WHERE student.email = $exam_recordation[Student_email]");
echo "<br><br>INNER JOIN query:   ";
echo "SELECT DISTINCT student.name
              FROM student
              INNER JOIN exam ON student.email = exam.Student_email
              WHERE student.email = $exam_recordation[Student_email]";

echo "<br>query result dump:   ";
var_dump($name_query);

所有的结果如下:

post email var dump:
array
  'Student_email' => string 'nuts@prof.com' (length=13)

recordation query: SELECT Student_email FROM exam WHERE partner_id IN (SELECT partner_id FROM exam WHERE Student_email = 'nuts@prof.com') AND Student_email <> 'nuts@prof.com'
recordation var dump:
resource(6, mysql result)
Name
foiling@gorilla.com


INNER JOIN query: SELECT DISTINCT student.name FROM student INNER JOIN exam ON student.email = exam.Student_email WHERE student.email = 
query result dump:
boolean false

你问的问题在哪里?在 INNER JOIN 中,我无法弄清楚为什么它不会将 $exam_recordation 查询中的电子邮件纳入其中,即使它是在表中提取的。在更大的函数中,我会让 INNER JOIN 在 while 循环中处理记录查询,以产生我希望的预期效果。我已经为这个问题苦苦挣扎了一段时间,由于我试图修复/寻求帮助以修复整个主要功能的尝试失败了,我想我会尝试这个问题的 INNER JOIN,因为它似乎是头撞砖墙的罪魁祸首。

4

1 回答 1

0
$exam_recordation = mysql_query("SELECT Student_email FROM exam WHERE partner_id IN (SELECT partner_id FROM exam WHERE Student_email = $data3) AND Student_email <> $data3");
echo "<br>recordation query:   ";
echo "SELECT Student_email FROM exam WHERE partner_id IN (SELECT partner_id FROM exam WHERE Student_email = $data3) AND Student_email <> $data3";
echo "<br>recordation var dump:   ";
var_dump($exam_recordation);
echo "<table border=='1'>
<tr>
<th>Name</th>
</tr>";
while ($fetch_record = mysql_fetch_array($exam_recordation))
{
    echo "<tr>";
    echo "<td>" . $fetch_record['Student_email'] . "</td>";
    echo "</tr>";
}

$name_query = mysql_query("SELECT DISTINCT student.name
              FROM student
              INNER JOIN exam ON student.email = exam.Student_email
              WHERE student.email = $exam_recordation[Student_email]");

看到这里,您正在使用变量 $fetch_record 获取查询,但稍后您使用的是 $exam_recordation,它只是 mysql 查询资源,而不是获取数据。

于 2013-05-02T18:57:48.643 回答