這聽起來可能很傻,但我試圖找出最好的方法在那些所有的值設置爲0爲起點統計表只運行一次查詢,我想你的意見,我表是由例如:PHP運行查詢一次
Col1 - Col2 - Col3 - Col4 - Created - Modified
0 0 0 0 Datetime- Datetime
我的主要腳本有幾個foreach循環,其中i評估一些條件,如果有比賽,我構建查詢並運行在最後一個的mysqli multiquery,通過實例(僞代碼) :
$query = '';
foreach ($array as $val) {
if ($val == $mycondition) {
$query .= "UPDATE mytable SET Col1 = Col1 + 1;";
}
}
$db = mysqliConnection();
$num = $db->query("SELECT * FROM my table WHERE id = '".$ID."' AND Col1 = 0 AND Col2 = 0 AND Col3 = 0 AND Col4 = 0");
$result = mysqli_num_rows($num);
// if 0 it means that nothing has been modified yet so i can run the query
if ($result > 0) {
$db->multi_query($query)
}
$db->close();
這是我現在能想到的最好的辦法,我創建的山坳umns創建和修改,但我認爲他們不會爲此工作,因爲創建時間將始終在修改時間之前,可能以毫秒爲單位(但我不想冒險採取路徑允許最多3秒左右運行多次查詢,如果用戶在3秒內錯誤地運行頁面幾次,將會存儲錯誤的值),並且修改後的列將在第一個值更新後立即改變,使得下一個查詢失敗,如果我依靠該列作爲條件WHERE子句(即使只是milisec)。
你覺得你們是最好的辦法還是我在正確的道路?
最好的問候
也許你可以着眼於使用SessionId進行查詢而不是在何時訪問它?更新與選擇有什麼關係並不明顯。也許你可以擴展,以獲得更好的答案。 – Khyron
我無法理解分隔查詢的原因嗎?不會將Select查詢中的WHERE子句附加到更新查詢工作上嗎? –
哦,是的抱歉,它可能是在同一個查詢,我困了哈哈,謝謝 – Aramil