2016-09-24 34 views
0

我想從MySQL數據庫中選擇數據並將其顯示在表格中,該表格目前工作正常,但我遇到了日期格式問題。使用PHP重新格式化MySQL日期

我想重新格式化MySQL日期爲dd/mm/YY,但我不知道該怎麼做,因爲我沒有專門選擇日期列。我只是從表中選擇所有列。

代碼:

<?php 
echo "<table style='border: solid 1px black;'>"; 
echo "<tr><th>Id</th><th>Name</th><th>Date</th></tr>"; 

class TableRows extends RecursiveIteratorIterator { 
    function __construct($it) { 
     parent::__construct($it, self::LEAVES_ONLY); 
    } 

    function current() { 
     return "<td style='width: 150px; border: 1px solid black;'>" . parent::current(). "</td>"; 
    } 

    function beginChildren() { 
     echo "<tr>"; 
    } 

    function endChildren() { 
     echo "</tr>" . "\n"; 
    } 
} 

$servername = ""; 
$username = ""; 
$password = ""; 
$dbname = ""; 

try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username,  $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $conn->prepare("SELECT * FROM users"); 
    $stmt->execute(); 

    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 

    foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
     echo $v; 
    } 
} 
catch(PDOException $e) { 
    echo "Error: " . $e->getMessage(); 
} 
$conn = null; 
echo "</table>"; 
?> 
+0

在其他編程語言(如c#和java)中,我們可以獲得列類型。我認爲這也可能在PHP中。通過了解列類型,您可以決定如何顯示它。 –

回答

0

萬一我的$k前提是列和$v爲價值是正確的,那麼這應該工作:

foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
switch ($k) { 
     case '{{column_name}}': 
      // Format {{column_name}} as you like, e.g: 
      $date_time = strtotime($v); 
      print date("d-m-y", $date_time); 
      break; 
     default: 
      echo $v; 
      break; 
} 
} 
+0

謝謝,這個作品!但我有問題,我無法轉換日期。如果我使用$ v,輸出總是01.01.1970。 – Uwe

+0

@Uwe oops,我的不好,簡單地做'd-m-Y' =>'d-m-y'。我也更新了答案。 – DanielTheGeek

+0

不好意思回答遲到。坦克很多你的幫助! – Uwe

0

是不是那個$ k是列名和$ v是價值?

如果是的話,那麼你就可以很容易地檢測到該日期列值,進行格式化:

foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
    switch ($k) { 
      case 'date_column': 
       // echo formatted $v 
       break; 
      default: 
       echo $v; 
       break; 
    } 
}