简体   繁体   中英

php search works as seperate page, but not on same page

I'm working on a project where I can use multiple forms on an html page to search and update tables from a mysql database. I have created a basic html form that will run a search on a separate php file. When I try to integrate that same php script into that same html it finds no results. Any help would be appreciated.

basic html

<html>
<body>

<form name="search" method="post" action="searchresults.php">
<input name="search" type="text" size="40" maxlength="50" />
<input type="submit" name="Submit" value="Search" />
</form>

</body>
</html>

search php

<?php

$database = "dbname";
$username = "name";
$password = "pass";
$host = "host";

$conn = new mysqli($host, $username, $password, $database);
if ($conn->connect_error){
    die("Failed:" . $conn->connect_error);
}
echo"Successful";

$query = $_POST['search']; 

$query = htmlspecialchars($query); 

$raw_results = mysqli_query($conn,"SELECT * FROM beers WHERE name LIKE '%".$query."%'");

if(mysqli_num_rows($raw_results) > 0){ // if one or more rows are returned do following

    while($results = mysqli_fetch_array($raw_results)){      
        echo "<p><h3>".$results['Name']."</h3>".$results['Brewery']."</p>";          
    }

}
else{ // if there is no matching rows do following
    echo "No results";
}  

?>

This works separated, but if I copy the same php script and insert it into the main html it connects but finds no results. Tried using _GET instead of _POST removed the action field and Ive searched all over for similar issues. If I scale everything completely down it gives me a parse error for $query = htmlspecialchars($query); , any thoughts?

Apply if (isset($query)) {...} . Only when search name is valid can you gain results.

<?php

$query = $_POST['search'];

// Apply validation.
if (isset($query)) {
    $query = htmlspecialchars($query);
    echo"Successful";

    $conn = new mysqli($host, $username, $password, $database);
    if ($conn->connect_error) {
        die("Failed:" . $conn->connect_error);
    }

    $raw_results = mysqli_query($conn, "SELECT * FROM beers WHERE name LIKE '%" . $query . "%'");

    if (mysqli_num_rows($raw_results) > 0) { // if one or more rows are returned do following
        while ($results = mysqli_fetch_array($raw_results)) {
            echo "<p><h3>" . $results['Name'] . "</h3>" . $results['Brewery'] . "</p>";
        }
    } else { // if there is no matching rows do following
        echo "No results";
    }
}
?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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