Ok, let's intend your code instead.
$query="SELECT * FROM personalinfo WHERE firstname= '$_POST[ffirstname1]' AND lastname='$_POST[flastname1]'";
$result=mysqli_multi_query($cxn,$query)
or die ("Couldn't execute query.".mysqli_error($cxn));
$j=1;
while ($row=mysqli_fetch_assoc($result))
{
foreach ($row as $colname => $value)
{
$array_multi[$j][$colname]=$value;
}
$j++;
return $array_mutli;
}
It is much more easy to see what is happening where when you do like this. As an example I found out that the problem I saw with the code doesn't exist. :o
What you do in the code above is that you store what you retrieve from the database in a variable called $array_multi. You then return that variable, which should not be done if you don't have a function. Just remove the row with return, it might work better without it.
When you have the variable $array_multi you call the variable $ffirstname1. That variable simply doesn't exist, PHP doesn't know that you had the same names as database rows. Instead you should call the variable $array_multi to get the result you want.
And you should really read up on sql injection to make the data in the database safe.