2010-03-30 25 views
0

我有一個PHP腳本,它從我的MySQL數據庫中的一行中取值,通過一個函數運行它,如果它確定它是真的返回一個值,並且如果它是假的,它需要轉到下一個值數據庫並檢查一個,直到最終返回true。 我想我需要使用mysql_fetch_assoc,但我不太確定使用它的方式......我希望我可以發佈我的代碼以獲得更具體的代碼,但代碼很多,大部分代碼沒有方向在這個問題上...PHP下一個MySQL行 - 如何移動指針,直到函數檢查爲真?

回答

2

是你可以在數據庫中做的「功能」,而不是?處理表中的每一行以檢查某種類型的條件確實是低效的。這正是數據庫擅長的,即高效處理查詢並快速獲得答案。

所以我建議在尋找如何做到這一切在數據庫方面,使你的PHP代碼只是獲取最終結果(即,由功能過濾行)。也許如果你提供了你的「功能」在做什麼的更多細節,可以提供更具體的答案。

+0

哦,不,我需要檢查它針對PHP會話變量。它不需要處理太多的數據,在它實現之前不會經過兩三次。 – ropbhardgood 2010-03-30 01:13:14

+0

你總是可以使用PHP會話變量作爲查詢參數:SELECT * FROM MYTABLE其中COL1 = dcp 2010-03-30 01:16:28

+0

我會那樣做,DCP,但實際上,我試圖找到值中的一個,其中一個不包含會話變量。你知道是否有辦法用MySQL命令做到這一點? – ropbhardgood 2010-03-30 01:17:32

0

您可以使用mysql_fetch_array,剛跳上值使用$行[ID],而不是$行[「名稱」]獲取。 假設你的函數返回true,你只需要使用$ row [lastid + 1]。

如果ID isn`t增量,這可能是工作:

$qry_result = mysql_query($qry) or die(mysql_error()); 
while ($row = mysql_fetch_array($qry_result)) { 
    $result = yourfunction($row['whatever'); 
    if ($result != false) 
     break; 
} 

而且有下一個PHP函數(),它前進一個指針指向下一個數組元素。在你的函數中你可以實現一個數組生成器,然後在這個元素之間循環。取決於你的功能實際上或腳本的目的是什麼。如果有很多結果,它可能會導致一些負荷。

+0

有趣。當主鍵不是增量時這會起作用嗎? – ropbhardgood 2010-03-30 01:30:34

+0

使用非增量更新了您的案例的解決方案。 – 2010-03-30 01:52:55

0

你可以嘗試這樣的事:

SELECT * 
FROM table 
WHERE field NOT LIKE '%$sessionvar:%'; 

我認爲這是你所追求的?

+0

我認爲這會有所幫助。謝謝。 – ropbhardgood 2010-03-30 07:59:08

0
  1. 你不應該檢查數據庫的這種方式,如上所述。數據庫與純文本文件有一點區別。
  2. 你不應該在你的數據庫中有一堆用值1分隔值的字段:值2 |值1:值2 |值1:值2。它必須是單獨的字段。數據庫與純文本文件有一點區別,你最好學習它。
+0

感謝您的寶貴意見。 – ropbhardgood 2010-03-30 07:57:41

相關問題