The public has a choice whether or not it pays private sector union workers. If I don't like the UAW, I don't have to buy GM. I don't have the same choice with public school teachers. I'm forced to pay their salaries no matter what.
The real world isn't black and white. Unions can do harm, to be sure, but a balance must be struck between the needs of the employer--public or private--and the needs of the employees, and it's never as simple as saying "we shouldn't have unions".
For instance, in my local school district, the superintendent is being criticized for seeking a raise in the middle of budget cuts. Among his most vocal critics have been the teachers. In response to their criticism, the superintendent proposed new rules that would effectively require teachers to take dozens of hours of useless(1) "technology training" on their own time, without pay; thankfully we have a union capable of protecting teachers against such abuse.
(1) Literally, useless. These courses are part of an ongoing initiative the only point of which, as near as I can tell, is so the superintendent can say X number of teachers have participated in Y number of hours of additional training under his reign. The teachers who already have a clue about computers get nothing from these courses; and unfortunately, the courses are so poorly designed that those who actually do have a thing or two to learn get nothing out of them, either.