PHP搜索仅显示SQL的一个结果

时间:2015-07-25 14:13:15

标签: php

我在我的网站上使用PHP搜索功能,它目前只显示我的SQL数据库中的一个结果 - 我希望它显示site_keywords中包含的所有结果!

这是我目前在我的页面上使用的PHP代码

<?php
mysql_connect("danieljosephdesignsc.ipagemysql.com", "searchdata", "danieljoseph");
mysql_select_db("my_db");

 if(isset($_GET['search'])) {

$search_value = $_GET['value'];

$query = "select * from sites where site_keywords like '%$search_value%'";

$run = mysql_query($query);

while($row=mysql_fetch_array($run)){
$title = $row['site_title'];
$link = $row['site_link'];
$desc = $row['site_desc'];
}

}
?>

以下是我体内的内容:

<?php echo "<div><a href='$link'><h2>$title</h2></a><p>$desc</p><a href='$link'>$link</a></div>";?>

如果您需要更多信息,请与我们联系。对此的任何帮助将不胜感激。

由于

3 个答案:

答案 0 :(得分:1)

你的问题是你没有在循环中回应结果。

你需要这样的东西:

while($row=mysql_fetch_assoc($run)){
$title = $row['site_title'];
$link = $row['site_link'];
$desc = $row['site_desc'];
echo "<div><a href='$link'><h2>$title</h2></a><p>$desc</p><a href='$link'>$link</a></div>";
}

重要提示:

您使用的是已弃用的代码。对于以mysql_开头的任何函数都是如此。这意味着您的代码将不再适用于较新版本的php,如果您在查询中调用任何变量,则可能不安全。您确实需要使用mysqli或PDO使用 预备语句 进行查找。

From the official site

  

自PHP 5.5.0起,此扩展程序已弃用,并将在中删除   未来。相反,应该使用MySQLi或PDO_MySQL扩展。   另请参阅MySQL:选择API指南和相关常见问题解答以获取更多信息   信息。该功能的替代方案包括:

mysqli_connect()
PDO::__construct()

以下是mysqli prepared statements的使用方法 或PDO prepared statements

答案 1 :(得分:0)

问题在于这段代码:

while($row=mysql_fetch_array($run)){
$title = $row['site_title'];
$link = $row['site_link'];
$desc = $row['site_desc'];
}

即使您获得了多个结果,每个结果也会覆盖前一个结果的值。所以最后你只有一行。尝试将结果保存到数组中,然后在体内迭代它。

答案 2 :(得分:0)

$rows =array();
while($row=mysql_fetch_array($run)){
     $rows[] =$row;
}
foreach($rows as $row){
    $title = $row['site_title'];
    $link = $row['site_link'];
    $desc = $row['site_desc']; 
   echo "<div><a href='$link'><h2>$title</h2></a><p>$desc</p><a href='$link'>$link</a></div>";

}