1

所以我可以搜索整个数据库,但我需要一种将 $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 它根本不起作用

4

1 回答 1

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/>";
}
于 2012-06-29T17:07:42.920 回答