开发者

How do I check if a database row exists using DBD::mysql and Perl?

I'm working with a MySQL database and need开发者_如何学Python to check if a row is already there before deciding which queries to run.

The table I'm working on is something like this:

player(playerid, nickname, data1, data2, data3)

Where "playerid" is an auto-incremented number and "nickname" is unique.

I tried some queries with COUNT, COALESCE, fetch->rows, etc.. and got nowhere. I already saw this question, but couldn't solve anything.


Could you please post the specific query with SELECT COUNT(*) that didn't work and what the problem was?

The query should be modeled upon this answer: How do I know how many rows a Perl DBI query returns?

Assuming your "row is already there" definition is "the player with the given nickname is there", the query would be:

my $th = $dbh->prepare(qq{SELECT COUNT(1) FROM player WHERE nickname='$nickname'});
$th->execute();
if ($th->fetch()->[0]) {
    ....
} # Code stolen shamelessly from the link above


You can use some dbh/sth method to check whether the result set is empty:

my $stmt = 'SELECT playerid FROM player WHERE playerid = ?';

if ($dbh->selectrow_array($stmt, undef, $id)) {
    print "The row exists";
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜