搜索后显示整行

时间:2012-06-29 17:04:24

标签: php mysql

所以我可以搜索整个数据库,但我需要一种方法将$ db_tb_atr_name =“location”更改为所有列。我需要搜索任何关键字并返回整行。现在返回的只是位置。我不知道如何更改我的代码以实现这一目标。

<?php

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

$db_host="localhost";
$db_username="megan";
$db_password="megan";
$db_name="megan";
$db_tb_name="user";
$db_tb_atr_name="location";

 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 
CONCAT(id_user,fname,lname,location,email,phone_number,username) LIKE '%".$query."%'");

echo "<h2>Search Results</h2><ol>";
while($data_fetch=mysql_fetch_array($query_for_result))
{
 echo "<li>";
 echo substr($data_fetch[$db_tb_atr_name], 0,160);
 echo "</li><hr/>";
}
 echo "</ol>";

 mysql_close();
 }
 ?>

如果我将$ db_tb_atr_name更改为$ db_tb_name,它将无法正常工作

1 个答案:

答案 0 :(得分:1)

不要这样做。尝试这样的事情:

$query_for_result=mysql_query("SELECT * FROM $db_tb_name WHERE CONCAT(id_user,fname,lname,location,email,phone_number,username) LIKE '%".$query."%'");

echo "<h2>Search Results</h2><ol>";
while($data_fetch=mysql_fetch_assoc($query_for_result))
{
    echo "<li>";
    echo substr(implode(",", $data_fetch), 0,160);
    echo "</li><hr/>";
}
echo "</ol>";

我将你的mysql_fetch_array切换到mysql_fetch_assoc。现在,您可以拥有更有条理的关联响应。

另外,我破坏了你的$ data_fetch,这意味着它将你的不同列加在一起,用列分隔。

我们总是可以根据您的需要将其更改,但您所需的输出并不详细。

您也可以这样做:

$query_for_result=mysql_query("SELECT * FROM $db_tb_name WHERE  CONCAT(id_user,fname,lname,location,email,phone_number,username) LIKE '%".$query."%'");

echo "<h2>Search Results</h2><ol>";
while($data_fetch=mysql_fetch_assoc($query_for_result))
{
    echo "<li>";
    foreach($data_fetch as $row => $value){
        echo "Row: $row - $value<br />";
    }
    echo "</li><hr/>";
}