1

私はMySQLデータベースを使用しており、実行するクエリを決定する前に、行がすでに存在するかどうかを確認する必要があります。

私が取り組んでいるテーブルは次のようなものです。

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

ここで、「playerid」は自動インクリメントされた番号であり、「nickname」は一意です。

COUNT、COALESCE、fetch-> rowsなどでいくつかのクエリを試しましたが、どこにも行きませんでした。私はすでにこの質問を見ましたが、何も解決できませんでした。

4

2 に答える 2

7

SELECT COUNT(*)うまくいかなかった特定のクエリを投稿していただけますか?問題は何でしたか?

クエリは、次の回答に基づいてモデル化する必要があります。PerlDBIクエリが返す行数を知るにはどうすればよいですか。

「行がすでに存在する」定義が「指定されたニックネームを持つプレーヤーが存在する」であると仮定すると、クエリは次のようになります。

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
于 2010-11-14T17:56:55.423 に答える
0

dbh / sthメソッドを使用して、結果セットが空かどうかを確認できます。

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

if ($dbh->selectrow_array($stmt, undef, $id)) {
    print "The row exists";
}
于 2010-11-14T18:01:03.750 に答える