-1

So I have this MySQL query:

$search = $_POST['search'];
$SQL = "SELECT * FROM `data` WHERE name='$search';
$rs = mysqli_query($dbconfig, $SQL);

I use this code to search data into the database, with the word that has been submitted by the form. The problem is, the query only shows up results if the search word matches the data in the database.

For example, if I have a file named advertisement.png and I search for this file, it will only show up if I search for the exact same word.

If I search for advertisement.png it will show advertisement.png, but if I search for advertisement it will not show up. What I want, is to search data that are similar to the key word provided in the form.

So if I search"advert" it shows up results that are similar to this word.

Thanks in advance.

Chandana Kumara
  • 2,485
  • 1
  • 22
  • 25

6 Answers6

1

Use LIKE operator with % for both end as follows

$SQL = "SELECT * FROM `data` WHERE name LIKE '%$search%';
Chandana Kumara
  • 2,485
  • 1
  • 22
  • 25
0

Use LIKE operator with % at end

$search = $_POST['search'];
$SQL = "SELECT * FROM `data` WHERE name LIKE '$search%';
$rs = mysqli_query($dbconfig, $SQL);
Rajesh Patel
  • 1,946
  • 16
  • 20
0

You should use Like Operator. The Code will be

$search = $_POST['search'];
$SQL = "SELECT * FROM `data` WHERE name LIKE '%$search%';
$rs = mysqli_query($dbconfig, $SQL);
Jahid Mahmud
  • 1,136
  • 1
  • 12
  • 32
0

You have use % on start and end of your secrch value.

SELECT * FROM Customers WHERE Country LIKE '%land%';
Dave
  • 3,073
  • 7
  • 20
  • 33
Igor Duda
  • 1
  • 2
0

Ther is also some SQL functions for comparing string you could use like STRCMP(str1, str2), returns 0 if both strings are equal

lno
  • 1
  • 1
0

$sql = "select * from table_name name like '%search_key%' ";

Here % means all keyword you type from left and right. Any keyword matches it will give you the result

Shaon
  • 2,496
  • 26
  • 27