使用PDO使用变量进行SQL查询?

时间:2016-07-31 15:41:36

标签: php mysql sql sql-server pdo

通常大多数查询都是这样的:

  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表中包含大学课程的专栏。

0 个答案:

没有答案