implement geo / spatial / proximity search with php and mysql --- what have you done successfully
I think using Latitude and Longitude is the best bet. Because when you go global, then zipcode might not be very accurate search. There is a very good article about using spatial indexes and the Point type database fields. You can read here
http://vinsol.com/blog/2011/08/30/geoproximity-search-with-mysql/