What does unserialize return?
Check it with === false
as that would indicate the way you store or retrieve the data is not valid...
The Addslashes seems misplaced if it is meant to make the data valid for an sql query? then you should use mysql_escape_string on the Whole string, not on each line..
Something like
$placeholders = array("=", "--", "<b>", "</b>", "<i>", "</i>", "<blockquote>", "</blockquote>", "_", " ");
$replacevals = array("", "", "[b]", "[/b]", "[i]", "[/i]", "[blockquote]", "[/blockquote]", "", "");
$ingredients = $_POST['ingredients']; // You need to clean this data
$ingr = serialize(explode("\n", htmlentities(str_replace($placeholders, $replacevals, $ingredients))));
mysql_query ("INSERT INTO tablename (columnname) VALUES('".mysql_escape_string($ingr)."');");
mysql_query ("SELECT columnname FROM tablename;");
$row = mysql_fetch_assoc('columnname');
$test = unserialize(html_entity_decode($ingr));
print $test;
or perhaps i missunderstood something here.. anyway, for testing do an unserialize right after the serialize to test it..