使用多个关键字显示2个表的结果

时间:2013-02-27 08:08:22

标签: php mysql database

编辑......我有一个基于学习环境的规范化数据库。 我希望能够搜索名为“C_Search”的表中的一系列关键字,并使用它们来提取存储在“C_Info”中的课程详细信息。我有一个基本的搜索功能,但它让我疯狂如何获得关键字,因为我是所有这些的新手,并试图学习,因为我去...有时我们需要帮助

这些是相关表格及其中的字段。

C_Info

COURSE_ID 课程名 C_Description C_Duration C_Cost C_Entry_Req C_Assessment_Type C_Progression C_Type

C_Search

COURSE_ID C_Key_Words C_NLC_Ref_No Awarding_Body C_UCAS_Code

有一个由昏迷分隔的关键字列表。我想用它们来允许用户在数据库中搜索可用的课程。

我知道我之前发布了这个,但有些答案令人困惑,我正在努力学习。

<?php
mysql_connect ("localhost", "jimbooth_test","test1")  or die (mysql_error());
mysql_select_db ("jimbooth_groupproject");
// first part of the main query (with dummy WHERE operator so you can then use AND operators)
$query .= " AND C_Description like '%{$keyword_row['keyword']}%'";
// query the keywords
$res1 = mysql_query("select keyword from C_Search") or trigger_error(mysql_error()
// loop through rows and add conditions to the main query
while ($keyword_row = mysql_fetch_assoc($res1)) {
    $query .= " AND C_Description like '%{$keyword_row['keyword']}%'";
}
$res2 = mysql_query($query);
die($query);
if (mysql_num_rows($res2) <= 0) {
// no results
echo 'Sorry, No results found.';
} else
while ($row = mysql_fetch_array($res2)){
    echo '<br/> <B>Course Title:</B> '.$row['Course_Name'];
    echo '<br/> <B>Course Info:</B> '.$row['C_Description'];
    echo '<br/> <B>Duration:</B> '.$row['C_Duration'];
    echo '<br/> <B>Entry Requirements:</B> '.$row['C_Entry_Req'];
    echo '<br/> <B>Course Cost: '.$row['C_Cost'];
        echo '<br/> <B>Course Progression: '.$row['C_Progression'];    
    echo '<br/><br/>';
    }
?>

2 个答案:

答案 0 :(得分:0)

您的SQL查询失败:

  

“从C_Search中选择关键字”

这意味着$ res1不是结果。相反,它是一个布尔值的FALSE值。 mysql_fetch_assoc需要一个资源。你确定C_Info存在并且你没有做过任何拼写错误吗?

尝试添加:

$res1 = mysql_query("select keyword from C_Search") or trigger_error(mysql_error());

告诉我们是否有任何错误吐出到屏幕上。

PS :人们告诉你删除WHERE 1似乎没有意识到你这样做:

$query .= " AND C_Description like '%{$keyword_row['keyword']}%'";

进一步下线。虽然我同意您应该使用WHERE 1 = 1,因为这是在动态构造查询时最常用的“始终为真”条件:)

答案 1 :(得分:0)

我认为您与DB的连接设置不正确,请通过

检查连接
<?php
// Create connection
$con=mysqli_connect("example.com","peter","abc123","my_db");

// Check connection
if (mysqli_connect_errno($con)){
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
?>