select * from tabler order by random() limit 1 works for me.
I'm using pgsql, but I can't see why it doesn't work for mysql here. Using order by random() can be very expensive on large tables, since the whole table gets randomized, THEN the single row gets picked.
If you know the number of rows (or a close approximation of it) you can generate a random number in php with rand(0,maxrows-1) then just select from table limit 1 offset $OFFSET (or, in mysql's dialiect: select from table limit $OFFSET,1)