重复的动态链接

时间:2013-06-22 16:04:19

标签: php mysql

我有一个显示随机圣经引用的页面,您也可以从中搜索。此页面上的引号以动态链接格式显示,例如圣经-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>

请帮忙!

2 个答案:

答案 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