luasql を使用しています。このタイプのテーブルが 2 つあります。
IPINFO
CREATE TABLE `ipstats` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`ip` VARCHAR(15) NOT NULL,
`last_used` DATETIME NOT NULL DEFAULT '1981-09-30 00:00:00',
PRIMARY KEY (`id`),
UNIQUE INDEX `ip` (`ip`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
および別のテーブル ipnstats:
CREATE TABLE `ipnstats` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`ipstats_id` INT(10) UNSIGNED NOT NULL,
`nick` VARCHAR(32) NOT NULL,
`used_times` INT(10) UNSIGNED NOT NULL,
`last_used` DATETIME NOT NULL DEFAULT '1981-09-30 00:00:00',
PRIMARY KEY (`id`),
INDEX `ipstats_id` (`ipstats_id`),
INDEX `nick` (`nick`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
ここで私が達成しようとしているのは、テーブル内の両方のインデックス (と) が一致する場合にのみipnstats
、私のテーブルで の値used_times
が更新されるということです。私の挿入/更新コマンドは次のようになります。nickname
ipstats_id
INSERT INTO `ipstats_nicks` (`ipstats_id`, `nick`, `last_used`)
VALUES ( %d, '%s', '%s' )
ON DUPLICATE KEY
UPDATE `last_used` = '%s', `used_times` = `used_times`+1
次に、変数を使用してこの文字列をフォーマットしています。しかし、これはテーブルに必要な更新を提供していません。テーブルにデータを挿入し続けるだけです。
どんな助けでも大歓迎です。