Fitting a set if data to a 'plane'

I have a set of data ({{1,4,2},{1,-1,2},{-1,2,4},{2,1,5},{-1,1,4},{1,1,2},{5,2,2}}) that I am some how supposed to fit to "the plane, that is with the function $Ax+By+C$". I figured that I could obtain the parameters $A$, $B$, and $C$ with

FindFit[{{1, 4, 2}, {1, -1, 2}, {-1, 2, 4}, {2, 1, 5}, {-1, 1, 4}, {1, -1, 2}, {5, 2, 2}}, a*x + b*y + c, {a, b, c}, {x, y}]


But where does the z-value come into all of this? I can't figure out the third value in each set is connected to the FindFit function or to 'the plane'.

And I'm asked to graph the two side by side (the graph of 'the plane' and the data). I entered in:

Show[Plot3D[a*x + b*y + c /. FindFit[{{1, 4, 2}, {1, -1, 2}, {-1, 2, 4}, {2, 1, 5}, {-1, 1, 4}, {1, -1, 2}, {5, 2, 2}}, a*x + b*y + c, {a, b, c}, {x, y}], {x, -5, 5}, {y, -5, 5}, PlotRange -> All], ListPointPlot3D[{{1, 4, 2}, {1, -1, 2}, {-1, 2, 4}, {2, 1, 5}, {-1, 1, 4}, {1, -1, 2}, {5, 2, 2}}]]


But I got this in return:

General::ivar: "-4.99929 is not a valid variable."
ReplaceAll::reps: "{FindFit[{{1,4,2},{1,-1,2},{-1,2,4},{2,1,5},{-1,1,4},{1,-1,2},{5,2,2}},-4.99929\ a-4.99929\ b+c,{a,b,c},{-4.99929,-4.99929}]} is neither a list of replacement rules nor a valid dispatch table, and so cannot be used for replacing."
General::ivar: "-4.99929 is not a valid variable."
General::ivar: "-4.99929 is not a valid variable."
General::stop: "Further output of \!$$\*StyleBox[RowBox[{\"General\", \"::\", \"ivar\"}], \"MessageName\"]$$ will be suppressed during this calculation."
ReplaceAll::reps: "{FindFit[{{1.,4.,2.},{1.,-1.,2.},{-1.,2.,4.},{2.,1.,5.},{-1.,1.,4.},{1.,-1.,2.},{5.,2.,2.}},-4.99929\ a-4.99929\ b+c,{a,b,c},{-4.99929,-4.99929}]} is neither a list of replacement rules nor a valid dispatch table, and so cannot be used for replacing."
...


What am I doing wrong?

-
Try Clear[a,b,c,x,y] before anything else. Having done that, separate out the computation of the fitting parameters from the plotting. So, execute FindFit[] first, and then make the substitution. Wrap the first argument of Plot3D[] in Evaluate[], too. –  Ｊ. Ｍ. Apr 17 at 3:33
I think you additionally want to evaluate the FindFit call and replacement by wrapping in Evaluate. Plot3D holds its argument so the x and y get replaced by Plot3D before FindFit finds the parameter values. This causes you problems. –  Andy Ross Apr 17 at 3:36