Идея хорошая! Единственное, что мне не понравилось (вернее, не годится в некоторых случаях): у тебя в каждой таблице по умолчанию определяется primary key id, к тому же автоинкрементный. Безусловно, в 90% случаев так и делается. Но, как я говорил выше, при нестандартных или достаточно сложных ТЗ, такой вариант не проходит (например, удобнее использовать составной PK)...
Но, имхо, в 90% он отлично подойдет

P.S. Кстати, я думаю, в функциях update и insert не помешает что-то типа:
@$values.=",'".mysql_real_escape_string($v)."'";