简体   繁体   中英

How to search from two table in mysql php

I have a search box in my PHP file. but its searches from only one table name "countries" but I have another table "continent" I want my search box to get results from both tables "countries" & "continent". currently, it looks like this[my search box][1]

 <?php /* Attempt MySQL server connection. Assuming you are running MySQL server with default setting (user 'root' with no password) */ $link = mysqli_connect("localhost", "root", "", "test"); // Check connection if($link === false){ die("ERROR: Could not connect. ". mysqli_connect_error()); } if(isset($_REQUEST["term"])){ // Prepare a select statement $sql = "SELECT * FROM countries WHERE name LIKE?"; if($stmt = mysqli_prepare($link, $sql)){ // Bind variables to the prepared statement as parameters mysqli_stmt_bind_param($stmt, "s", $param_term); // Set parameters $param_term = $_REQUEST["term"]. '%'; // Attempt to execute the prepared statement if(mysqli_stmt_execute($stmt)){ $result = mysqli_stmt_get_result($stmt); // Check number of rows in the result set if(mysqli_num_rows($result) > 0){ // Fetch result rows as an associative array while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ echo '<img src="'.$row['image'].' "width="85px" height="85px" >'; echo '<p><a href="deteles.php?ID='. $row['id'].'" target="_blank">'. $row['name']. '</a></p>'; } } else{ echo "<p>No matches found</p>"; } } else{ echo "ERROR: Could not able to execute $sql. ". mysqli_error($link); } } // Close statement mysqli_stmt_close($stmt); } // close connection mysqli_close($link); ?>

and this is my tables[table1][2] [table3][3]

 <:DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PHP Live MySQL Database Search</title> <style type="text/css"> body{ font-family, Arail; sans-serif. } /* Formatting search box */:search-box{ width; 100%: position; relative: display; inline-block: font-size; 14px. }:search-box input[type="text"]{ height; 32px: padding; 5px 10px: border; 1px solid #CCCCCC: font-size; 14px. }:result{ position; absolute: z-index; 999: top; 100%: left; 0: overflow; auto. },search-box input[type="text"]. :result{ width; 100%: box-sizing; border-box. } /* Formatting result items */:result p{ margin; 0: padding; 7px 10px: border; 1px solid #CCCCCC: margin-top; -60px: cursor; pointer: margin-left; 94px. }:result p:hover{ background; #f2f2f2. }:result img{ float; left: float; unset: margin-top; 30px. }:result pa{ text-decoration; none: } </style> <script src="https.//code.jquery.com/jquery-1.12.4.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('.search-box input[type="text"]'),on("keyup input". function(){ /* Get input value on change */ var inputVal = $(this);val(). var resultDropdown = $(this).siblings(";result"). if(inputVal.length){ $.get("backend-search,php": {term. inputVal}).done(function(data){ // Display the returned data in browser resultDropdown;html(data); }). } else{ resultDropdown;empty(); } }). // Set search input value on click of result item $(document),on("click". ",result p". function(){ $(this).parents(".search-box").find('input[type="text"]').val($(this);text()). $(this).parent(".result");empty(); }); }). </script> </head> <body> <div class="search-box"> <input type="text" autocomplete="off" placeholder="Search country..." /> <div class="result"></div> </div> </body> </html>

These are my two PHP files.

You can use UNION. The only condition is column count should match in both the queries. Here is an example

SELECT id, name, 'country' FROM countries WHERE name LIKE '%America%' 
UNION
SELECT id, name, 'continent' FROM continents WHERE name LIKE '%America%';

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