0

我是 PHP 新手,我创建了一个表(书店),看起来像这样

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

id_book 和 id_topic有另一个表,例如

书表:

身份证 | 书名

主题表:

id_topic | 主题名称

我做了这个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);
4

2 回答 2

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);
}
于 2013-05-21T07:06:17.153 回答
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 代码。

于 2013-05-21T01:22:38.693 回答