通常大多数查询都是这样的:
SELECT column FROM table WHERE value = 'value';
或类似的东西。
但这是我的情景。
我有一个在线目录,允许人们从中搜索特定数据。搜索表单包含一个下拉菜单和2个输入框。下拉菜单包含值,每个值表示一个数据库中的不同数据库表。其他2个输入框将允许此人在单独的数据库中搜索值。
例如:如果一个人搜索" bachelors degree"在"营销"在" miami"中,miami是属于一个表的值,marketing是属于另一个表的值,而bachelors degree是一个数据库表本身,其中" marketing"列于。现在,"营销"也可以列入"文凭"数据库表,但如果该人搜索" bachelors degree",则SQL查询将仅查询" bachelors degree"表"营销"值。
我遇到的问题是提出正确的SQL查询来运行。
理想情况下,它应该是if,else语句。
示例:
如果"学士学位"被选中,
然后SQL将查询第一个数据库表以找到" miami"然后它将查询学士学位表以找到" marketing",然后找到该学院的名称包含" miami"和#34;营销" (根据学士学位表),然后它将显示迈阿密每所提供营销学士学位的大学的名单。
这是我的代码:
$query = $_GET['submit'];
$userSelection = filter_input(INPUT_POST, "degreetype"); //degreetype is the name attribute on the dropdown menu
if ($userSelection == "Bachelors Degree" ){
$query = $db->prepare("
SELECT b.Name
, b.BachelorsDegrees
, c.City
FROM BachelorsDegrees b
LEFT
JOIN College_Data c
ON c.City = b.Name
WHERE b.BachelorsDegrees = :SelectedDegree
&& c.City = :SelectedCity
");
$query->bindValue(':SelectedDegree', filter_input(INPUT_POST, "Course"));
$query->bindValue(':SelectedCity', filter_input(INPUT_POST, "City"));
//$rows = $query->fetchAll(PDO::FETCH_ASSOC);
$query->execute();
//} catch (PDOException $e) {
} foreach ($query as $row){
echo 'College Name: ' .$row['Name'];
echo '<br /> Accreditation: ' .$row['Accreditation'];
echo '<br /> Term Type: '.$row['TermType'];
} else {
echo "Unable to fetch Degrees!: ".$e->getMessage()."<br/>";
}
澄清:
College_Data =包含所有学院数据的表格(课程除外) BachelorsDegrees =每个大学所有学士学位课程的表格 姓名=大学的名字 BachelorsDegrees =(如果这是重复的......例如:BachelorsDegrees.BachelorsDegrees .....这是BachelorsDegrees表中包含大学课程的专栏。