Which MySQL data type to use for storing boolean values

Since MySQL doesn’t seem to have any ‘boolean’ data type, which data type do you ‘abuse’ for storing true/false information in MySQL?

Especially in the context of writing and reading from/to a PHP script.

Over time I have used and seen several approaches:

  • tinyint, varchar fields containing the values 0/1,
  • varchar fields containing the strings ‘0’/‘1’ or ‘true’/‘false’
  • and finally enum Fields containing the two options ‘true’/‘false’.

None of the above seems optimal. I tend to prefer the tinyint 0/1 variant, since automatic type conversion in PHP gives me boolean values rather simply.

So which data type do you use? Is there a type designed for boolean values which I have overlooked? Do you see any advantages/disadvantages by using one type or another?