Как проверить, существует ли строка базы данных, используя DBD :: mysql и Perl? - PullRequest
1 голос
/ 14 ноября 2010

Я работаю с базой данных MySQL, и мне нужно проверить, есть ли уже строка, прежде чем решать, какие запросы запускать.

Таблица, над которой я работаю, выглядит примерно так:

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

Где "playerid" - это число с автоинкрементом, а "ник" уникально.

Я пробовал некоторые запросы с COUNT, COALESCE, fetch-> row и т. Д. И ничего не получил. Я уже видел этот вопрос , но ничего не смог решить.

Ответы [ 2 ]

5 голосов
/ 14 ноября 2010

Не могли бы вы опубликовать конкретный запрос с SELECT COUNT(*), который не работал и в чем проблема?

Запрос должен быть смоделирован на основе этого ответа: Как узнать, сколько строк возвращает запрос Perl DBI?

Предполагая, что ваша "строка уже есть", определение "игрок с данным псевдонимом там", запрос будет:

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
0 голосов
/ 14 ноября 2010

Вы можете использовать некоторый метод dbh / sth, чтобы проверить, пуст ли набор результатов:

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

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