2013-06-29 68 views
0

我想使用foreach循環檢索mysql數據,因爲我有10名僱員記錄與費用,我想顯示每個員工名稱和他的費用與循環中的表。請建議我如何使用foreach調用此函數Foreach Loop Php Mysql檢索

$data = mysql_query("SELECT * FROM employees where dt >= '$from' AND dt <= '$to' ORDER by empname ASC"); 
while ($result = mysql_fetch_assoc($data)) 
{ 

$ta = $result["ta"]; 
$da = $result["da"]; 
$petrol = $result["petrol"]; 
} 

我需要這樣的報告。

Empname: 

Record1 Record2 
----------------- 
Empname: 

Record1 Record2 
--------------- 

請大家幫忙。

+0

順便說一句,你是搞亂'$ data'用'$ resul t' – vikingmaster

+1

請使用mysqli或PDO,因爲'mysql_ *'已被正式棄用,不應再使用。另外,小的「我」不應該用於以下問題:-) –

+0

請提供更多詳細信息,例如什麼是Record1,Record2,$ ta,$ da,$ petrol以及如何檢索Empname,Record1,Record2的值? – Debashis

回答

1

沒有更多的支持mysql_*功能,它們是officially deprecated不再保持,將在未來removed。您應該使用PDOMySQLi來更新您的代碼,以確保您的項目未來的功能。


由於您使用mysql_*,我希望你用你的$to$from變量mysql_real_escape_string如果從用戶輸入的到來。

我仍然不知道爲什麼要使用一個foreach,但你想做的事,可以用while來完成,這也是一個循環:

$data = mysql_query("SELECT * FROM employees where dt >= '$from' AND dt <= '$to' ORDER by empname ASC"); 
while($result = mysql_fetch_assoc($data)) 
{ 
    $rows[] = $result; 
} 

print_r($rows); 

下面是使用MySQLi的工作示例:

<?php 
$from = $_POST['from']; 
$to = $_POST['to']; 

if (is_null($from) || is_null($to)) 
    die('You must fill the from and to fields...'); 

$db = new mysqli('localhost', 'root', '', 'test_database'); 
if($db->connect_error) 
    die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error()); 

if (!$stmt = $db->prepare("SELECT empname, ta, da, petrol FROM employees WHERE dt >= ? AND dt <= ?")) 
    die('Prepare Error: ' . $db->error); 

if (!$stmt->bind_param('ss', $from, $to)) 
    die('Bind Parameters Error ' . $stmt->error); 

if (!$stmt->execute()) 
    die('Select Query Error ' . $stmt->error); 

$stmt->bind_result($empname, $ta, $da, $petrol); 
$rows = array(); 
while($stmt->fetch()) 
{ 
    $rows[$empname][] = array('ta' => $ta, 'da' => $da, 'petrol' => $petrol); 
} 
$stmt->close(); 
$db->close(); 

foreach ($rows as $empname=>$data) 
{ 
    echo $empname . ':<br /><br />'; 
    foreach ($data as $result) 
    { 
     echo $result['ta'] . ' ' . $result['da'] . '<br />'; 
     echo '-----------------<br />'; 
     $petrol = $result['petrol']; 
    } 
    echo '==========================<br />'; 
} 

輸出:

Jorge:<br /><br /> 
12 3<br /> 
----------------- 
1 4<br /> 
----------------- 
2 6<br /> 
----------------- 
3 1<br /> 
----------------- 
33 11<br /> 
----------------- 
==========================<br /> 
John:<br /><br /> 
4 3<br /> 
----------------- 
5 6<br /> 
----------------- 
6 8<br /> 
----------------- 
7 9<br /> 
----------------- 
8 10<br /> 
----------------- 
==========================<br /> 
+0

對不起,男士遲到。 @prix我可以使用雖然檢索數據,但我需要通過員工姓名記錄和重要的事情是我需要與該員工姓名應顯示在表中的所有記錄。例如,我有兩個用戶名的10條記錄。他們不是按順序在MySQL中,但我需要第一個用戶名應顯示他的5條記錄。 –

+0

@BolemVeeru我明白了,這是在主要問題上錯過的一些非常重要的信息,我會更新我的答案並讓你知道一些。 – Prix

+0

@BolemVeeru已更新它。 – Prix