You probably reach the limit on text in a single line and will need to do 2 separate /msg commands -- one for everything but the link, and one for the link.
However, there are a few things with your script.
var %text = $read(phone.csv,w,$2- *)
Because you have a space between $2- and *, if you searched for "joh", it wouldn't pick up "john" because it expects a space after the text your'e searching for. Use $+ between those to fix that problem.
msg $chan $+(",$1,") $2 $3*
$3* ? Do you mean $3- ? Of course, if that's what you mean, you could just do $2- instead.
Also, $qt is good for quotes... $qt($1) instead of $+(",$1,").