2009/6/4 Joe Atzberger <joe.atzberger@liblime.com>
Kohackers --
I want to mention this because I've seen a lot of recent patches still using the old style of code calling $sth->finish() explicitly. I know a lot of the codebase still does this internally, but for Koha such usage is almost always wrong.
One way to avoid this problem is to not even create an $sth.
For INSERT, UPDATE, and DELETE statements, I find that a $dbh->do($statement) is often sufficient. (The do() method can take bind variables, too.)
For SELECT statements, I just use $dbh->selectall_arrayref($statement, { Slice => {} }, @bind_variables). This will give me what I want in one shot without having to do the prepare/execute/fetchrow_hashref dance. AND there's no $sth for me to accidentally call finish() on, either. If you're pretty sure the result set isn't going to be huge, taking this approach will also save you from a lot of unnecessary typing.
----
A long time ago, I read an essay on Forth, and it had a quote that really stuck with me. It said that the best way to solve a problem is to completely avoid it. Structure the system such that the problem can't even exist. I really liked that.
Buckminster Fuller (who was not a programmer (but who was a great man)) had a similar system design aesthetic. He was all about designing systems that made it impossible for certain problems to exist. To me, this is a profound and powerful problem-solving strategy, and this seemed like a good time to share it w/ the rest of you. :)
--beppu