The following should work. I did not post a complete solution the first time. I posted an idea

expecting you to fill in the rest. At any rate you have something to work with now. The search is not really good as it does not take into account results that contain more than one search term, meaning if an entry has 2 search terms in it, that entry will be listed twice. Anyway I hope this helps.
[PHP]<?php
$link = mysql_connect('localhost', 'root', 'vipula');
if (!$link)
{
die('Could not connect: ' . mysql_error());
}
@mysql_select_db(test1) or die("unable to select database");
$name = $_POST['name'];
$name_arr = explode(' ', $name);
$search_result = '';
foreach($name_arr as $key => $name)
{
$query="SELECT * FROM staffpub WHERE";
$query.=" authors LIKE '%$name%'";
$query.=" OR title LIKE '%$name%'";
$query.=" OR source LIKE '%$name%' ORDER BY title";
$result_arr[$key]=mysql_db_query("test1", $query);
$num_rows_arr[$key] = mysql_num_rows($result_arr[$key]);
$search_result.= "Found $num_rows_arr[$key] results for the term $name.<br />";
}
mysql_close();
echo($search_result);
echo '<b><center><font size="4" color="#FF0000">Search Result</font></center></b><br><br>';
foreach($result_arr as $key => $result)
{
$i=0;
while ($i < $num_rows_arr[$key])
{
$row = mysql_fetch_row($result);
$search_term = $name_arr[$key];
$authors = $row[1];
$title = $row[2];
$source = $row[3];
echo "<b>Search Term:</b> $search_term<br><b>Authors:</b> $authors<br><b>Title:</b> $title<br><b>Source:</b> $source<br><br><hr><br>";
$i++;
}
}
?>[/PHP]
One more thing:
Where I have
[PHP]$authors = $row[1];
$title = $row[2];
$source = $row[3];[/PHP]
If you have an ID field in staffpub the above is fine. If you only have 3 columns in staffpub you will need them to be defined this way:
[PHP]$authors = $row[0];
$title = $row[1];
$source = $row[2];[/PHP]