如何显示所有匹配的关键字

时间:2013-05-21 00:15:13

标签: php sql join

我是PHP新手,我创建了一个表(书店)真的像这样

  

no_id | author | id_book | id_topic | quote | comments | no_page

id_book和id_topic 有另一个表格,例如

书的表 :

  

id_book | BOOK_NAME

主题表 :

  

id_topic | TOPIC_NAME

我制作了这个sql语句用于显示我系统中的输出,但我的问题是系统在提交关键字时只显示一个输出。即使数据库中几乎没有相似的词。

"SELECT a.*, b.book_name 
   FROM bookstore AS a 
   LEFT JOIN book AS b  ON  a.id_book=b.id_book 
  WHERE quote LIKE '%".

任何人都可以帮我如何显示所有匹配报价?我很困惑* _ *

编辑: 这是我的PHP代码。

$colname_Recordset1 = "-1";
if (isset($_GET['quote'])) {
    $colname_Recordset1 = $_GET['quote'];
}

mysql_select_db($database_config, $config);
$query_Recordset1 = "SELECT a.*, b.book_name FROM bookstore a 
    LEFT OUTER JOIN book b ON a.id_book = b.id_book 
    WHERE a.quote LIKE '%'". $colname_Recordset1."%%'";

$Recordset1 = mysql_query($query_Recordset1, $config) 
    or die(mysql_error());

$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

2 个答案:

答案 0 :(得分:0)

我认为,如果我理解正确,那么您的查询应该更像:

SELECT a.*, b.book_name 
  FROM bookstore a 
  LEFT OUTER JOIN book b ON a.id_book = b.id_book 
  WHERE a.quote LIKE '%'

如果您仍然获得单个结果(您知道有多个结果),则需要发布用于从数据库中提取记录的PHP代码。

答案 1 :(得分:0)

您应该像这样获取结果,参考http://www.php.net/manual/en/function.mysql-fetch-assoc.php

while ($row = mysql_fetch_assoc($Recordset1)) {
    print_r($row);
}

你应该使用mysql_escape_string,完整的php代码

来转义用户输入
mysql_select_db($database_config, $config);

$filter = '';
if (isset($_GET['quote'])) {
    $filter = " WHERE a.quote LIKE '%" . mysql_escape_string($_GET['quote']) . "%'";
}

$result = mysql_query(
    "SELECT a.*, b.book_name FROM bookstore a 
    LEFT OUTER JOIN book b ON a.id_book = b.id_book" . $filter,
    $config
) or die(mysql_error());

while ($row = mysql_fetch_assoc($result)) {
    // If you need to output table, put the code here
    print_r($row);
}