MySQLのテーブルを更新するために、この簡単なスクリプトを作成しました。そのために、forループを作成し、次のことを試しました(コードパッドリンク)。
sUpdate = [[UPDATE `latest`
SET `date` = '%s'
WHERE `date` = '%s'
AND `fid` > 50000]]
for i = 1, 12 do
print( i )
sOldDate = "2009-"..tostring(i).."-10"
sNewDate = "2010-09-"..tostring(i)
sUpdate = string.format( sUpdate, sNewDate, sOldDate )
print( sUpdate )
end
出力は次のとおりです。
1
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
2
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
3
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
4
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
5
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
6
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
7
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
8
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
9
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
10
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
11
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
12
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
ご覧のとおり、print(i)
は問題なく印刷されていますが、sOldDate
との両方が1sNewDate
として扱われています。次に、とを次のように変更しました。sOldDate
sNewDate
sOldDate = string.format("2009-%d-10", i)
sNewDate = string.format("2010-09-%d", i)
そして、私はまだ両方の日付の出力を次のように取得しています:ここに見られるように2009-1-10と2010-09-1。
このループで何が問題になる可能性がありますか。私は長い間そのようなループに取り組んできました、そしてそれらは今日まで私を決して失望させませんでした。
私が特定できないのは、私の愚かな間違いだと思います。どんな助けでも大歓迎です。