2012-11-13 20 views
1

我有一個這樣的數據庫:處理一欄的奇異記錄

---------------------------------------------- 
    | ID | Time | Typeop  | Operator | 
    ---------------------------------------------- 
    | 1 | 10:01 | withdrawal |  John  | 
    | 2 | 10:01 | deposit  |  Mike  | 
    | 3 | 10:01 | deposit  |  Andrew | 
    | 4 | 10:02 | check  |  John  | 
    | 5 | 10:02 | withdrawal |  Simon | 
    | 6 | 10:03 | withdrawal |  Dorothy | 

通過下面的查詢我選擇最後三行:

SELECT * from mytable ORDER BY ID DESC LIMIT 0,3  

問題:我需要「迴音」在一個PHP腳本中,我腳本的不同位置和不同順序中的最後三個運算符,因此我將每個名稱分配給不同的變量。在這個例子中:

  • $ NAME0 =多蘿西
  • $名1 =西蒙
  • $ NAME3 =約翰

所以,我就能把他們(例如)在諸如文本這個......「多蘿西是過去做人妖。約翰之後的操作今天三個前停止......」

THK提前

+0

基本上你想做什麼?爲什麼'mike'或'andrew'不在列表中,因爲您是通過'id'命令的? –

+0

究竟是什麼問題? – GBD

+0

是的,我會將字段「Operator」的最後選定記錄關聯到另一個變量,以便我可以使用該值在文本文件中進行回顯。簡而言之,我需要獨立處理例子中最後3個名字查詢的每個元素。考慮到我很新手,也許這是一個非常重要的組織。在此先感謝 – mattew

回答

0

結果放入一個數組並使用鍵012,對其進行定位:

$operators = array(); 

$result = $mysqli->query("SELECT Operator from mytable ORDER BY ID DESC LIMIT 0,3"); 

if($result) 
{ 
    while($row = $result->fetch_assoc()) 
    { 
     $operators[] = $row['Operator']; 
    } 
} 

if(count($operators) >= 3) 
{ 
    echo htmlentities($operators[0]) . " has been the last to make an operation after " . htmlentities($operators[1]) . ". " . htmlentities($operators[2]) . " today stopped before them"; 
} 

此示例使用庫MySQLi並假定總是會有3個記錄。

編輯:這是同樣的原理,當任何MySQL庫,例如與本地mysql_ *庫:

$operators = array(); 

$result = mysql_query("SELECT Operator from mytable ORDER BY ID DESC LIMIT 0,3"); 

if($result) 
{ 
    while($row = mysql_fetch_assoc($result)) 
    { 
     $operators[] = $row['Operator']; 
    } 
} 

if(count($operators) >= 3) 
{ 
    echo htmlentities($operators[0]) . " has been the last to make an operation after " . htmlentities($operators[1]) . ". " . htmlentities($operators[2]) . " today stopped before them"; 
} 
+0

我試過你的代碼,並且收到以下錯誤:「致命錯誤:調用第5行中的/home/mysite/myfile.php中的非對象上的成員函數query()。第5行是「$ result = $ mysqli-> query」(從「mytable ORDER BY id DESC LIMIT 0,3」中選擇運算符);「。我在哪裏錯誤?我是新手,這是MySQLi的問題嗎?謝謝您的幫助! – mattew

+0

該代碼假定您已經創建了一個名爲'$ mysqli'的mysqli連接對象。如果你還沒有這樣做,在開始處添加:'$ mysqli = new mysqli('localhost','username','password','databasename');'明顯改變細節。 – MrCode

+0

我已經在文件中打開了一個普通的mysql連接,這是一個問題嗎? – mattew

0

// Collects data from table

$data = mysql_query("SELECT * from mytable ORDER BY ID DESC LIMIT 0,3") or die(mysql_error()); 

// puts the "mytable" info into the $info array

$info = mysql_fetch_array($data); 

// print the info

while($info = mysql_fetch_array($data)) 
{ 
    echo "<b>Operator:</b> ".$info['Operator'] . " "; 
} 
0

您需要將結果存儲在一個獨立的PHP數組

$ops = array(); 
$result = mysql_query("SELECT Operator from mytable ORDER BY ID DESC LIMIT 0,3"); 
$i = 0; 
if($result) 
{ 
    while($row = mysql_fetch_assoc($result))   
     $ops[$i++] = $row[0];   
} 

這裏$row每次都有改變,這將只保留最新值,但$ops被存儲所有

現在你可以使用這個數組您想要的輸出到任何地方(直到你改變陣列$ops),例如

$st = $ops[0]." has been the last to make an operation after ".$ops[1].". ".$ops[2]." today stopped before the three..."; 
echo $st;