2014-09-03 44 views
1

感謝您指導有關mySql API的鏈接,我認爲需要更改爲mySQLi或PDO。我已經發布了下面幾乎完整的代碼,因爲我第一次可以請幫助下面的錯誤,因爲它不顯示預期的結果,因爲使用mysql _...的代碼請幫助。 (假設select語句是正確的吧。)foreach中的Number_format特定項目php

<?php 

$Ticker = htmlspecialchars($_GET["Ticker"]); 
$StartDate = htmlspecialchars($_GET["StartDate"]); 
$EndDate = htmlspecialchars($_GET["EndDate"]); 

echo "<td>testing.</td>"; 
echo "</table>"; 
$pdo = new PDO('mysql:host=;dbname=, ,); 
$statement = $pdo->query("Select Ticker, xxx as 'Last Update',Price, xxx as TTlUndetAmt, 
FROM trade 
WHERE Ticker = '$Ticker' and DATE(xxx) between '$StartDate' and '$EndDate' 
GROUP BY Ticker, date 
ORDER BY Ticker ASC, Date(ReleaseDT) DESC"); 
$row = $statement->fetch(PDO::FETCH_ASSOC); 
//echo htmlentities($row['_message']); 

echo "<table>"; 
while ($row = mysql_fetch_assoc($sql_result)) { 
    echo "<tr><td>"; 
    foreach ($row as $value) { 

     if ($value === end($row)) { 
      echo number_format($value); 
     } else 
     { 
     echo $value . ","; 
     } 
    } 
    echo " </td></tr> " . "\n"; 
    $i++; 
} 

?>

我從SELECT語句的結果從MySQL數據庫。我使用PHP來獲取所需的數據。我只想將格式中的每一行的特定項目指定爲數字,即(千位分隔)。我怎麼能這樣做?下面的代碼可以這樣做嗎?

電流輸出:

ticker1,2014-09-03 ,1.190,0,37247000 
ticker2,2014-09-03 ,1.180,0,23246000 
ticker3,2014-09-03 ,1.170,0,19188000 

預期輸出:

ticker1,2014-09-03 ,1.190,0,37,247,000 
ticker2,2014-09-03 ,1.180,0,23,246,000 
ticker3,2014-09-03 ,1.170,0,19,188,000 

我使用的代碼:

while ($row = mysql_fetch_assoc($sql_result)) { 
    echo "<tr><td>"; 

    foreach ($row as $value) { 
     echo $value . ","; 
     if ($value === $row[5]) { 
      echo number_format($value); 
     } 
    } 
    echo " </td></tr> " . "\n"; 
    $i++; 
} 

echo "</table>"; 

我發現上面的代碼將創建在重複的角色最後一行[5]。

據我有限的知識,我改

while ($row = mysql_fetch_assoc($sql_result)) { 
    echo "<tr><td>"; 

    foreach ($row as $value) { 

     if ($value === end($row)) { 
      echo number_format($value); 
     } else 
     { 
     echo $value . ","; 
     } 
    } 
    echo " </td></tr> " . "\n"; 
    $i++; 
} 

回答

3

我將納入關鍵。這樣的話,你可以檢查該字段名稱:

while ($row = mysql_fetch_assoc($sql_result)) { 
    echo "<tr><td>"; 

    foreach ($row as $key => $value) { 
     echo $value . ","; 
     if ($key === 'YourFieldName') { 
      echo number_format($value); 
     } 
    } 
    echo " </td></tr> " . "\n"; 
    $i++; 
} 

echo "</table>"; 

功能mysql_fetch_assoc已經返回鍵/值數組,所以你不需要任何那裏。請注意,mysql_fetch_assoc是舊的和棄用的API的一部分。如果你喜歡,看看:Choosing a MySQL API

+0

哈哈,提前七秒鐘給同一個答案。 +1 – Fluffeh 2014-09-03 10:43:08

+0

@Fluffeh GMTA :-) – GolezTrol 2014-09-03 10:43:40

2

我會帶來的名稱,並在您的foreach使用$key=>$val這樣:

foreach ($row as $key=>$value) 
{ 
    echo $value . ","; 
    if ($key == "theRightColumn") // guessing the column name 
    { 
     echo number_format($val); 
    } 
    else 
    { 
     echo $val; 
    } 
} 
-1

你在這行更改修改

foreach ($row as $value) { 

foreach ($row AS $key => $value) { 
+0

爲什麼要投票? – 2014-09-03 11:09:07

+0

這不是一個完整的答案 – Sal00m 2014-09-03 11:28:53

+0

我的意思是,交易者的代碼是正確的。但是他不想在那裏使用$ key。 – 2014-09-03 11:35:35