Both terms relate to transaction isolation in databases.
A "phantom read" means if you run some sql at one point in time, then run it again later more results may be returned. i.e. between the first and second runs, more data may have been added that satisfies your query criteria.
A "dirty read" is when you can read uncommitted data. i.e. data that may not end up being persisted into the database. [ June 09, 2008: Message edited by: Paul Sturrock ]