in reply to DBI and the hell it has made my life...

Your first issue is that you did not use strict. Second, connect with RaiseError set to 1 so you can get rid of the or die in your code. Third, do returns the number of rows affected or undef, you need to use execute as the docs state:
It should not be used for SELECT statements because it does not return a statement handle (so you can't fetch any data).

Carter's compass: I know I'm on the right track when by deleting something, I'm adding functionality... download and use The Emacs Code Browser