繁体   English   中英

如何修复Web应用程序搜索栏中的php查询并显示结果

[英]How to fix php query in web application search bar and display results

我的Web应用程序的导航栏中有一个搜索框,该搜索框出现在每个网页上。 我有一个查询,该查询应根据用户在搜索框中输入的文本从数据库中提取结果,但此刻不显示任何结果。

我的Web应用程序本质上是事件的张贴板,因此我希望用户能够搜索事件,然后将该事件显示在表中或将其带到事件本身的页面中,以较容易的为准。 我使用Netbeans作为我的IDE,我的数据库是XAMPP中的MariaDB。 我的Web应用程序目前仅在本地托管。 我目前有一个查询,应该搜索数据库,但是我认为查询的输出或结果是错误的。 我不太擅长PHP,但只需要这样做,就像在Web应用程序的每个页面中一样。

每页搜索栏的代码:

<form action="search.php" method="post">
   <input type="text" name="search" placeholder="Search for an event..">
    <input type="submit" value="Search">
</form>

然后search.php文件如下所示:

<?php


$search = filter_input(INPUT_POST, 'search');
$companyname = filter_input(INPUT_POST, 'companyname');
$eventname = filter_input(INPUT_POST, 'eventname');
$servername = "localhost"; 
$username = "root";
$password = "";
$dbname = "fyp";

$conn = new mysqli($servername, $username, $password, $dbname);


if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

echo "Connected successfully";
$sql = "SELECT eventname FROM event WHERE eventname LIKE '%$search%'";


if ($conn->query($sql) === TRUE) {
    echo "Result Found";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

此刻,它只是说“连接成功:从事件WHERE事件名中选择事件名'%Golf%'”。 我在数据库中有一个名为“ SHARE Golf Classic”的事件,所以我目前正在测试该事件。 我想导航到一个名为Event.php的页面,并在表中显示结果,或者用事件的详细信息填充标签或文本框。 事件表由事件ID,事件名称,事件类型,慈善机构,contactdetails,位置和日期组成。

确定对象错误(Mysqli)可能很困难,这就是为什么应该改用try-catch方法的原因。 您的代码可能如下所示:

<?php

$search = filter_input(INPUT_POST, 'search');
$companyname = filter_input(INPUT_POST, 'companyname');
$eventname = filter_input(INPUT_POST, 'eventname');
$servername = "localhost"; 
$username = "root";
$password = "";
$dbname = "fyp";

try {
    $conn = new mysqli($servername, $username, $password, $dbname);
    $sql = "SELECT eventname FROM event WHERE eventname LIKE '%$search%'";
    if (($result = $conn->query($sql)) === true) {
        var_dump($result)
    }
} catch (mysqli_sql_exception $e) {
    var_dump($e)
} finally {
    $conn->close();
}

请记住,像这样在查询中使用POST请求中的参数可能很危险。 我建议研究用于PHP( PDO )的其他MySQL客户端,并改用准备好的语句

上面的代码示例还使用了finally ,它是PHP 5.5中添加的,请确保您的版本是此版本或更高(当前支持的PHP版本是7.2和7.3-您应该始终保持最新)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM