所以我可以搜索整个数据库,但我需要一种方法将$ 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,它将无法正常工作
答案 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/>";
}