我正在尝试从包含输入关键字的 mysql 数据库中列出句子。下面我有一个调用的 php 脚本quoteme.html
,其中包含一个提交表单。当我使用它提交关键字时,quoteme.html
它只列出第一页。当我单击“下 10 条记录”时,我得到一个空白页面(仅显示“下 10 条记录”链接)。如果我在查询行中输入关键字,例如:
$sql = "SELECT * FROM `text` WHERE MATCH(body) AGAINST('freak' IN BOOLEAN MODE)LIMIT $offset, $rec_limit";
它运作良好并列出所有链接的句子
编辑:
尽管
$sql = "SELECT * FROM `text` WHERE MATCH(body) AGAINST('$q' IN BOOLEAN MODE)LIMIT $offset, $rec_limit";
仅适用于第一页。
freak
和有什么区别$q
?为什么要 $q = $_GET['q'];
在下一页重置其值?
编辑2:
我试图调试错误,我将下面的代码放在查询行之后的 php 脚本中。
echo '<pre>';
var_dump($_GET);
var_dump($offset);
var_dump($rec_limit);
echo '</pre>';
$_GET
变量在第一页后消失,$offset
变量$rec_limit
正常。
那么现在我怎样才能$_GET
在下一页上最后呢?
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db('quotes');
/* Get total number of records */
$q = $_GET['q'];
$sql = "SELECT count(*) FROM text ";
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not get data: ' . mysql_error());
}
$row = mysql_fetch_array($retval, MYSQL_NUM );
$rec_count = $row[0];
if( isset($_GET{'page'} ) )
{
$page = $_GET{'page'} + 1;
$offset = $rec_limit * $page ;
}
else
{
$page = 0;
$offset = 0;
}
$left_rec = $rec_count - ($page * $rec_limit);
$sql = "SELECT * FROM `text` WHERE MATCH(body) AGAINST('$q' IN BOOLEAN MODE)LIMIT $offset, $rec_limit";
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
echo "SENTENCE :{$row['body']} <br> ".
"--------------------------------<br>";
}
if( $page > 0 )
{
$last = $page - 2;
echo "<a href=\"$_PHP_SELF?page=$last\">Last 10 Records</a> |";
echo "<a href=\"$_PHP_SELF?page=$page\">Next 10 Records</a>";
}
else if( $page == 0 )
{
echo "<a href=\"$_PHP_SELF?page=$page\">Next 10 Records</a>";
}
else if( $left_rec < $rec_limit )
{
$last = $page - 2;
echo "<a href=\"$_PHP_SELF?page=$last\">Last 10 Records</a>";
}
mysql_close($conn);
?>
有人能告诉我我的代码有什么问题吗?谢谢。