Apart from the syntax problem, MySQL versions earlier than 4.1 (which is far from stable at the moment) do not support subqueries.
Here's a workaround to such limitation.
#!/usr/bin/perl -w
use strict;
use DBI;
my ($dbh, $rows);
$dbh = DBI->connect('dbi:mysql:test',
'myusername',
'mypassword',
{RaiseError=>1}) ||
die "Error opening database: $DBI::errstr\n";
#
# First, get destination from your table
#
my ($destination) = @{$dbh->selectcol_arrayref(qq{
SELECT destination
FROM checkin
WHERE firstname='Henry' AND lastname='Rollins'}
)}
# || die "destination not found\n"; # wrong
or die "destination not found\n"; # correct
#
# Notice that the script fails if destination is not found.
#
#
# then, use $destination to update the table
#
$rows = $dbh->do(qq{UPDATE checkin
SET destination = '$destination'
WHERE firstname='Bill' AND lastname='Gates'})
|| die "Couldn't update record : $DBI::errstr";
print "$rows row(s) updated in checkin";
$dbh->disconnect || die "Failed to disconnect\n";
A few comments:
- You are using UPDATE and then printing "rows added."
Be aware that the UPDATE statement modifies an existing record. It does not add rows.
- What you are doing with your SQL statements is taking one column (destination) from a row identified by name and surname, and then inserting such column into another record identified by another name/surname pair.
Make sure that this is really what you want to do.
- You are using a MySQL installation with "root" user and no password.
This is a huge security risk. Please fix it as fast as you can.
update - Fixed a small bug in the script.
_ _ _ _
(_|| | |(_|><
_|
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.