我有一个显示随机圣经引用的页面,您也可以从中搜索。此页面上的引号以动态链接格式显示,例如圣经-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>
请帮忙!
答案 0 :(得分:0)
你的while循环是使用mysql_fetch_array获取行。它第一次运行时会检索结果,因此$ row的值设置为一个数组,条件为&#34; true&#34;所以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>";
并且两个部分都应该有效。
答案 1 :(得分: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