0

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

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

C_Info

Course_ID Course_Name C_Description C_Duration C_Cost C_Entry_Req C_Assessment_Type C_Progression C_Type

C_搜索

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/>';
    }
?>
4

2 回答 2

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,因为这是动态构造查询时最常用的“始终为真”条件:)

于 2013-02-27T08:21:54.550 回答
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();
  }
?> 
于 2013-02-27T08:24:38.923 回答