2011-07-13 57 views
-1

我有一個選擇查詢輸出如下PHP的MySQL檢查前一行

id   price valid  
1000368  69.95 1  
1000369  69.94 0  
1000370  69.95 0 

現在在PHP我想通過編號1000369的功能。該功能只有在id爲1000368的情況下有效= 1時才能執行。如果不是1,則它會拋出錯誤。所以如果傳遞的ID是1000370,它將檢查1000369是否有效= 1。

我該如何檢查?我認爲這在邏輯上是可行的,但我無法編寫代碼,我嘗試使用foreach,但最後它總是檢查最後一條記錄1000370,因此會引發錯誤。

問候

+0

什麼功能?請顯示您的代碼,以便我們有一個參考點。 –

+0

這是一些基本的東西。我很高興你正在尋求幫助,但也請閱讀一些基本的教程。 – pthurmond

+0

爲什麼有人會給一個-ve投票?有沒有人可以問這裏的好/壞問題? – geej

回答

3

使用一個布爾變量:

<?php 
$lastValid=false; 
while($row = mysql_fetch_array($result)) 
{ 
    if ($lastValid) { 
     myFunction(); 
    } 
    $lastValid = $row['valid']; 
} 
?> 

(對不起可能出現的錯誤,必須在目前沒有訪問控制檯)

+0

嗨,謝謝你的回覆..你能否解釋我,如何設置$ lastvalid = false是可能的?我認爲我應該在if條件中檢查row [valid] = 1 .. – geej

+0

雖然上面的代碼應該可以工作,但您可以從'$ lastvalid = 0'開始,這樣會更有意義。原因是PHP認爲'0'等於'false',任何其他數字都是'真'(這個想法是從C編程語言中借用的)。所以'if($ lastValid)'(這是一個簡短的說法if($ lastValid == true)')和說'if($ lastValid!= 0)' – bcoughlan

+0

謝謝。我說得對。我不得不在$ lastValid = $ row ['valid']後加入「break」 ,這樣它就不會爲第一條記錄做。 – geej

1

如果我理解正確的話,你要檢查,如果以前的ID是valid

$prev['valid'] = 0; 

foreach($input as $i){ 

    if($prev['valid']){ 

     // Execute function 

    } 

    $prev = $i; 

} 
0
<?php 
$sql = "SELECT * FROM tablename"; 
$qry = mysql_query($sql); 

while($row = mysql_fetch_array($qry)) 
{ 
    if ($row['valid'] == 1) 
    { 
     // do some actions 
    } 
} 
?> 
0

我真的建議通過一些教程走。這是人的基本東西。

下面是如何請求特定的記錄:

//This is to inspect a specific record 
$id = '1000369'; //**some specified value** 
$sql = "SELECT * FROM data_tbl WHERE id = $id"; 
$data = mysql_fetch_assoc(mysql_query($sql)); 

$valid = $data['valid']; 

if ($valid == 1) 
    //Do this 
else 
    //Do that 

這裏是如何通過所有的記錄中循環,並檢查每個。

//This is to loop through all of it. 
$sql = "SELECT * FROM data_tbl"; 
$res = mysql_query($sql); 
$previous_row = null; 

while ($row = mysql_fetch_assoc($res)) 
{ 
    some_action($row, $previous_row); 
    $previous_row = $row; //At the end of the call the current row becomes the previous one. This way you can refer to it in the next iteration through the loop 
} 

function some_action($data, $previous_data) 
{ 
    if (!empty($previous_data) && $condition_is_met) 
    { 
    //Use previous data 
    $valid = $previous_data['valid']; 
    } 
    else 
    { 
    //Use data 
    $valid = $data['valid']; 
    } 

    if ($valid == 1) 
    { 
    //Do the valid thing 
    } 
    else 
    { 
    //Do the not valid thing 
    } 

    //Do whatever 
} 

這裏有一些鏈接到一些好的教程: http://www.phpfreaks.com/tutorials
http://php.net/manual/en/tutorial.php