0

我有一个页面显示随机圣经引用,您也可以从中搜索。此页面的引号以动态链接格式显示,例如 bible-query.php?id=200

在搜索结果页面上,我在页面底部和顶部分别放置了一个链接,以帮助用户返回随机显示页面。这些链接是动态链接。唯一的问题是,我只能获取顶部链接来显示动态链接,底部的只是加载一个没有引号的页面。

我想要的是让底部和顶部的“后退”链接显示相同的动态链接位置。

这是我用于搜索结果的代码:

<html>
<font face="arial">
<title>BQuotes: Random Bible Verses</title>
<?php
// db requirements
$db_host="localhost";
$db_username="username";
$db_password="password";
$db_name="name";
$db_tb_name="table";
$db_tb_atr_name="line";
$db_tb_atr_name2="book";
$db_tb_atr_name3="cap";
$db_tb_atr_name4="verse";

//do search task


mysql_connect("$db_host","$db_username","$db_password");
mysql_select_db("$db_name");

$query=mysql_real_escape_string($_GET['query']);

$query_for_result=mysql_query("SELECT * FROM $db_tb_name WHERE 

$db_tb_atr_name like '%".$query."%' OR $db_tb_atr_name2 like '%".$query."%' 
OR $db_tb_atr_name3 like '%".$query."%' OR $db_tb_atr_name4 like '%".$query."%'");

echo "Search Results<ol>";

// new bible query section begins


define ('HOSTNAME', 'localhost');
define ('USERNAME', 'username');
define ('PASSWORD', 'password');
define ('DATABASE_NAME', 'name');

$db = mysql_connect(HOSTNAME, USERNAME, PASSWORD) or die ('I cannot connect to   
MySQL.');

mysql_select_db(DATABASE_NAME);

$query = "SELECT id,book,cap,verse,line FROM table ORDER BY RAND() LIMIT 1 ";

$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {

echo "<center><a href='bible-query.php?id=$row[id]'>Back</a></center> ";

}

//mysql_free_result($result);
//mysql_close();

//bible query new section ends




while($data_fetch=mysql_fetch_array($query_for_result))
{
echo "<li>";

echo substr($data_fetch[$db_tb_atr_name2], 0,160)," ";
echo substr($data_fetch[$db_tb_atr_name3], 0,160)," ";
echo substr($data_fetch[$db_tb_atr_name4], 0,160)," ";

echo substr($data_fetch[$db_tb_atr_name], 0,160);
echo "</li><hr/>";
}






echo "<center><a href='bible-query.php?id=$row[id]'>Back</a></center> ";

echo "</ol>";

//mysql_close();
?>

</font>
</html>

请帮忙!

4

2 回答 2

0

将您的代码更改为此。不需要 while 循环,因为您在查询中限制了 1 行。我还更改了您应该使用的 php mysql 函数。

$query = "SELECT id,book,cap,verse,line FROM table ORDER BY RAND() LIMIT 1 ";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);

echo "<center><a href='bible-query.php?id=$row[id]'>Back</a></center> ";

注意到我使用了 mysql_fetch_assoc

于 2013-06-22T16:21:35.967 回答
0

您的 while 循环正在使用 mysql_fetch_array 获取行。在它第一次运行时,它会检索一个结果,因此 $row 的值设置为一个数组,并且条件为“true”,因此 while 循环中的位运行。但是,在第二次运行时没有第二行,因此 $row 设置为 false 并且 while 循环不运行。这意味着在 while 循环之后 $row 是一个空变量。当它到达该数组的第二次调用时,它是空的。通过删除 while 循环,$row 变量只被获取一次并返回第一行。这就是你所需要的。

只需更改这一点:

while ($row = mysql_fetch_array($result)) {

echo "<center><a href='bible-query.php?id=$row[id]'>Back</a></center> ";

}

至:

$row = mysql_fetch_array($result);

echo "<center><a href='bible-query.php?id=$row[id]'>Back</a></center>";

两个部分都应该工作。

于 2013-06-22T16:06:42.750 回答