आप उस कॉलम की प्राथमिक कुंजी ऑटो वेतन वृद्धि कार्यक्षमता को निकाल सकते हैं, फिर हर बार जब आप अपडेट करते हैं कि स्तंभ हाथ से पहले एक क्वेरी चलाते हैं जो तालिका में सभी पंक्तियों को गिनेंगे, तो एक लूप चलाएं जो उस पंक्ति गणना के माध्यम से पुनरावृत्त करता है, जिसमें प्रत्येक मान सम्मिलित करें संबंधित पंक्ति, और अंत में उस पंक्ति के मान के साथ एक नई पंक्ति सम्मिलित करते हुए एक क्वेरी चलाएँ, जिसमें कुल पंक्ति संख्या एक है। यह निर्दोष रूप से काम करेगा और आप जो हैं उसे पूरा करने की कोशिश करने वाले किसी व्यक्ति के लिए सबसे सटीक समाधान है। यहाँ कोड का एक उदाहरण है जिसे आप फ़ंक्शन के लिए उपयोग कर सकते हैं:
$table_row_count = mysql_result(mysql_query("SELECT COUNT(`field_1`) FROM `table`"), 0);
$viewsrowsdata = mysql_query("
SELECT `rank`, `field1`, `field2`, `field3`, `field4`
FROM (SELECT (@rank:=@rank+1) as `rank`, `field1`, `field2`, `field3`, `field4`
FROM (SELECT * FROM `views`) a
CROSS JOIN (SELECT @rank:=0) b
ORDER BY rank ASC) c
");
while ($row = mysql_fetch_assoc($viewsrowsdata)) {
$data[] = $row;
}
foreach ($data as $row) {
$new_field_1 = (int)$row['rank'];
$old_field_1 = (int)$row['field1'];
mysql_query("UPDATE `table` SET `field_1` = $new_field_1 WHERE `field_1` = $old_field_1");
}
mysql_query("INSERT INTO `table` (`field1`, `field2`, `field3`, `field4`) VALUES ('$table_row_count' + 1, '$field_2_value', 'field_3_value', 'field_4_value')");
यहाँ मैंने एक साहचर्य सारणी बनाई, जिसे मैंने एक चुनिंदा प्रश्न के भीतर क्वेरी के साथ रैंक कॉलम पर जोड़ा था, जिसने प्रत्येक पंक्ति को 1. से शुरू होने वाला रैंक मान दिया। फिर मैंने साहचर्य सरणी के माध्यम से पुनरावृत्ति की।
एक अन्य विकल्प पंक्ति की गिनती प्राप्त करना, एक मूल चयन क्वेरी चलाना, सहयोगी सरणी प्राप्त करना और इसे उसी तरह से पुनरावृत्त करना होगा लेकिन एक जोड़ा चर के साथ जो प्रत्येक पुनरावृत्ति के माध्यम से अद्यतन करता है। यह कम लचीला है लेकिन एक ही बात को पूरा करेगा।
$table_row_count = mysql_result(mysql_query("SELECT COUNT(`field_1`) FROM `table`"), 0);
$viewsrowsdata = mysql_query("SELECT * FROM `table`");
$updated_key = 0;
while ($row = mysql_fetch_assoc($viewsrowsdata)) {
$data[] = $row;
}
foreach ($data as $row) {
$updated_key = $updated_key + 1;
mysql_query("UPDATE `table` SET `field_1` = '$updated_key' WHERE `field_1` = '$row['field_1']'");
}
mysql_query("INSERT INTO `table` (`field1`, `field2`, `field3`, `field4`) VALUES ('$table_row_count' + 1, '$field_2_value', 'field_3_value', 'field_4_value')");