允许用户在数据库中搜索用户名/电子邮件并显示结果

时间:2014-11-27 19:49:37

标签: php mysql database search

我试图让用户搜索数据库并回显结果,我想搜索多个表。我知道我可以做SELECT * FROM x1,x2,但这些行被命名为其他东西,所以我不能     echo $ row ['用户名'] 当另一行是username2时。也许如果它可能像if($ row == whatever),idk。谢谢你的帮助。

<?php
$search = $_POST['Srch'];
$host = "whatever";
$db = "whatever";
$user = "whatever";
$pwd = "whatever";
$link = mysqli_connect($host, $user, $pwd, $db);
$query = "SELECT * FROM users WHERE email LIKE '%$search%'";
$results = mysqli_query($link, $query);

if(isset($_POST['Srch'])) {
  if(mysqli_num_rows($results) >= 0) {
    while($row = mysqli_fetch_array($results)) {
        echo "Username: " . $row['username'];
        echo "Email: " . $row['email'];
    }
  }
}
?>
<body>
<form action="" method="POST">
<input type="Text" name="Srch">
<input type="Submit" name="Submit">
</form>

编辑:找到一种方法来做到这一点。这样的事情有效:

function search1() {
// Search stuff here
}
function search2() {
// Search more stuff here
}

if(isset($_POST['Srch'])) {
search1();
search2();
}

1 个答案:

答案 0 :(得分:0)

如果你想搜索多个表,你将不得不以某种方式加入它们。由于您没有发布表结构,我只能对您要执行的操作做出假设,但一般语法是:

$query = "SELECT * FROM users u LEFT JOIN something s ON s.id = u.something_id WHERE u.email LIKE '%$search%'";

然后你可以回显出返回的不同列。但同样,这个问题需要更多信息才能得到更好的答案。

希望这无论如何都有帮助!