PHP has the MOST TERRIBLE defaults of any language, and MySQL drives me nuts
First of all, magic quotes should not even exist. Much less should they be ON BY DEFAULT. And they could AT LEAST do us the courtesy of providing a standard function to de-magic-quote everything if and only if they are on. It should be called undo_magic_quotes_if_they_are_on_so_i_dont_kill_the_webmaster_of_my_host()
The semicolon has been recommended as a standard parameter separator FOR OVER A FREAKING DECADE. Can we not set arg_separator.input to "&;" by default? And why do webmasters not do this? It's been OVER A DECADE since the recommendation was made!
Register globals should be off. I can't remember what the default is set to.
And WHY ON EARTH do different database drivers have different representations of "true" and "false"?!?!?!?! I don't care what you do but PLEASE BE CONSISTENT!
That's all I can remember for the moment. I know there are more, though.
But really, what psycho set these defaults to begin with. Who on earth, without knowing what application is going to be run on the data, automatically munges it for a specific application (databases, in this case -- specifically databases where the programmer is too lazy to be bothered with parameterized queries!)
And then MySQL. Goodness! You can't call a function in a default value? Why the @#$@ not? And timestamps can only default to CURRENT_TIMESTAMP if they are the _first_ timestamp column in the table? Are you freaking kidding me? And no sequences? Why on earth! They aren't that hard to implement. Oh -- that's right -- you would need functions as default values to make use of them!
This is why I don't let other people host my stuff.