Re: Learning DBI
by DamnDirtyApe (Curate) on Nov 07, 2002 at 21:20 UTC
|
The DBI tutorials here in the monastery are an excellent resource -- if you've worked on those and still had problems, we need more to be able to help you.
Could you please post some code you're trying, and the kind of errors/problems you're having?
_______________
DamnDirtyApe
Those who know that they are profound strive for clarity. Those who
would like to seem profound to the crowd strive for obscurity.
--Friedrich Nietzsche
| [reply] |
Re: Learning DBI
by gjb (Vicar) on Nov 07, 2002 at 21:21 UTC
|
| [reply] |
|
Like I said, I've read through the tutorials here at perlmonks.
I need help right down to the syntax. It's mostly greek to me.
I connect to the DB ok, but that's where my success seems to end.
here's a snipet (keep in mind I have little idea what I'm doing here):
my $sth = $dbh->prepare( qw/ SELECT date, title, entry FROM News / );
$sth -> execute() or die "Couldn't execute statement: $DBI::errstr; st
+opped";
while ( my ($date, $title, $entry) = $sth->fetchrow_array() ) {
print STDOUT "Date: $date Title: $title Entry: $entry\n";
}
I'm just trying (at this point) to read the three fields (date, title, and entry) from every row of the News table in this database. | [reply] [d/l] |
|
You're setting up a SELECT SQL statement selecting date, title and entry fields from a table called News. This is what prepare does. In the next statement this gets executed, i.e. the query is actually submitted to the database. The while loops over the rows fetched from the database and prints them out.
Of course, your database should have a table News with fields date, title and entry to start with.
First you should check what tables have been defined, if any. This can be done using the mysql client that comes with mysql, or even by just peeking into the file system (if memory serves). There's also an SQL query to do this, but I don't remember it of hand.
Hope this helps, -gjb-
Update: You really don't want qw since this evaluates to a list of words while prepare is expecting just a single string. Use q or qq instead.
| [reply] [d/l] [select] |
|
Actually, it looks like your problems are a bit more fundemental than just DBI - your using the quoting operator qw to set up your SQL. That's probably not what you want. Please have a look at perlop, specifically the part about "Quote and Quote-like Operators".rdfield
| [reply] [d/l] |
|
I get the following error when the above code runs:
DBI prepare: invalid number of parameters: handle + 6
Thanks for the translation, it helps.
Tell me if I have this correct:
The prepare statement stores an address into $sth then the execute command gets the information from the address in the database and translates it back to the data I need. Am I understanding it correctly?
| [reply] [d/l] |
|
Re: Learning DBI
by cLive ;-) (Prior) on Nov 07, 2002 at 21:28 UTC
|
| [reply] |
|
| [reply] |
|
Can't beat O'REILLY especially at that price... and it's on the way to my house now ;)
| [reply] |
Re: Learning DBI
by Bishma (Beadle) on Nov 08, 2002 at 09:36 UTC
|
Here's a question that would help me out. Is it possible to select a row where some field is the largest in the table?
For example, say I want to fetch the row with the most recent date (format 20021108). | [reply] |
|
SELECT MAX(article) AS article FROM shop
+---------+
| article |
+---------+
| 4 |
+---------+
Taken from the MySQL docs.
Hope this helps, -gjb- | [reply] |
|
that's cool, but how dow I get it to return the whole row?
UPDATE:Never mind, I figured it out.
Thanks for the help everyone, I think I'm getting a handle on this now.
| [reply] |