Your query is simply looking for the verbatim search phrase, possibly preceded or followed by other characters. If you want it to search "name" for partial matches of your phrase like "how to search" or "make search", etc., then you'll either need to have the right version of MySQL, change your table type to MyISAM (not hard, but there are tradeoffs) or concoct some elaborate PHP logic to get a query more like what you are actually talking about.
What version of MySQL do you have? According to the docs, "Full-text indexes can be used only with MyISAM tables. (In MySQL 5.6 and up, they can also be used with InnoDB tables.) Full-text indexes can be created only for CHAR, VARCHAR, or TEXT columns. "
Working up some PHP to parse your search phrase into words can be fairly involved, but I've seen it done. Something like this is very primitive but could work:
$keywords = $_GET["q"]; // get user search string from the query string
$keyword_array = preg_split("/[\s,]+/", "hypertext language, programming", NULL, PREG_SPLIT_NO_EMPTY);
$like_elements = array();
foreach($keyword_array as $kw) {
$like_elements[] = "`name` LIKE '%" . mysql_escape_string($kw) . "%'"; // you really shouldn't be using mysql any more but for the sake of simplicity I'm using it here
}
$sql = "SELECT * FROM stocks WHERE " . implode(" OR ", $like_elements) . " order by code";
That query will return any record with one word that matches -- including single-letter words like "a" which would result in a lot of inappropriate matches probably. You might want to skip words shorter then 3 chars.