You should use the SQL OR statement, better than CONCAT one in this case.
Combined with a space before and after what you search, this should give you the expected result !
(I mean if you search for 'raid' you will not find 'Eminem - Not Afraid', if you want to find it you have to search for 'afraid' for exemple ; If you want to sort the results by revelance, you will have to create indexes and use them, or use Levenshtein method or something else ...)
Don't forget to escape your data before using it in sql statements.
Btw if you want to make it case insesitive you will have to use blabla COLLATE UTF8_GENERAL_CI LIKE %what you search% blabla
// if you are using mysql_connect()
$search_value = ' '.mysql_real_escape_string($_POST["search_value"]).' ';
$query = "select * from `songs` where `title` like '%$search_value%' or `artist` like '%$search_value%'";
// if you are using PDO
$args[':search_value'] = '% '.$_POST["search_value"].' %';
$query = "SELECT * FROM `songs` WHERE `title` LIKE :search_value OR `artist` LIKE :search_value";
$qry = $PDO->prepare($query);
$res = $qry->execute($args);
For a multi-words search you can also use
// for mysql_connect()
$search_value = $_POST["search_value"];
$search_value = explode(' ', $search_value);
foreach($search_value as $k => $v){
$search_value[$k] = mysql_real_escape_string($v);
}
$search_value = ' '.implode(' % ', $search_value).' ';
// for PDO
$search_value = explode(' ', $_POST["search_value"]);
$search_value = implode(' % ', $search_value);
$args[':search_value'] = '% '.$search_value.' %';
$_POSTdata NEVER goes directly into a query. Without escaping in some form this will not work.