所以讓我解釋一下我的問題,讓我們假設我運行查詢像這樣:關於SQL查詢的信息,保存用php
$myquery = sql_query("SELECT name FROM table WHERE name='example' LIMIT 0,1");
現在..我想檢索到的名稱存儲到一個變量,所以我會做這樣的事情:
while ($myrow = sql_fetch_assoc($myquery)) {
transfer_row($myrow);
print"Name: $row_name";
}
$stored_name = $row_name;
注:transfer_row()只是我寫一個函數,$ myrow [ '名']並將其存儲在$ ROW_NAME,爲了便於參考
現在,在這個階段一切都很好,這裏是它變得有趣的地方。請注意,在這個階段,我仍然有一個分配給$ row_name的名稱。再往下頁我運行另一個查詢來檢索表中的一些其他的信息,我需要檢索的事情之一是名稱的列表了,所以我只想運行此查詢:
$myquery = sql_query("SELECT name, year FROM table WHERE DESC LIMIT 0,10");
while ($myrow = sql_fetch_assoc($myquery)) {
transfer_row($myrow);
$year = $row_year;
$link = "/$year";
print "<li style=\"margin-bottom: 6px;\"><a href=\"$link\">$row_name</a>\n";
}
現在,如果這個查詢中的$ row_name與舊查詢中的$ row_name相匹配,我想編寫一個if語句來執行,這就是爲什麼我們在變量中存儲了第一個$ row_name。
if ($row_name == $stored_name){
// execute code
}
然而,由於大多數人都知道,這不會工作,原因是,它只是再需要$ stored_name並提出新的$ ROW_NAME到$ stored_name,等於是第一個$ ROW_NAME的值丟失,現在,對於我的應用程序來說,至關重要的是我訪問第一個$ row_name並在第二個查詢運行後比較它,我可以在這裏做什麼?如果什麼都不能做,那麼實現這種目標的替代方案是什麼。
謝謝。
編輯,MY transfer_row()函數:
function transfer_row($myrow) {
global $GLOBALS;
if(is_array($myrow)) {
foreach ($myrow as $key=>$value) {
$key=str_replace(":","",$key);
$GLOBALS["row_$key"] = $value;
}
}
}
你在哪裏把這個if語句?在while循環內?爲什麼你不能比較而不使用「transfer_row」? – Colandus
你的問題是無關緊要的,如果我沒有轉移行比較,沒有什麼區別。 – user3332590
不好意思?這是絕對相關的。如果我們不知道在哪種情況下會發生這種比較,我們將假定它在while循環內。在那種情況下,大衛的答案是正確的。在執行'transfer_row'調用之前進行比較。 – Colandus