2017-09-15 26 views
0

我有一個php代碼,它提取表名「account」中的所有字段(大約50個)。代碼按預期工作。但是,我需要將字段「register_date」的日期格式從「Y-m-d H:i:s」更改爲「m-d-Y」,然後返回JSON編碼的字符串。我可以使用下面的代碼,但由於我有50個字段,所以它變得乏味。返回JSON編碼字符串之前PHP字段更改日期格式

$json_response = array(); 
$json_response['registered_date'] = date("m-d-Y", strtotime($result['registered_date'])); 
$json_response['contract_number'] = $result['contract_number']; 

有沒有辦法方便地做到這一點?

$order = htmlspecialchars(trim($_POST['order_list']), ENT_QUOTES); 
$id = htmlspecialchars(trim($_POST['id_list']), ENT_QUOTES); 
$sql = $DB_CON_C->prepare("SELECT * FROM account WHERE contract_number=:order AND id=:id"); 

$sql->bindValue(':order', $order, PDO::PARAM_STR); 
$sql->bindValue(':id', $id, PDO::PARAM_STR); 
$sql->execute(); 
$result = $sql->fetch(PDO::FETCH_ASSOC); 

$json_response = array(); 
$json_response['registered_date'] = date("m-d-Y", strtotime($result['registered_date'])); 
$json_response['contract_number'] = $result['contract_number']; 

die(json_encode($json_response)); 
+0

您可以在想要的格式直接從MySQL的返回日期。閱讀[MySQL中的日期格式](https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format)。您還應該閱讀關於PHP中的[date()函數](http://php.net/manual/en/function.date.php)。有時候會更容易提問,我知道...... – marekful

+0

你連接到'$ result'?這對我來說沒有任何意義。 – Brad

+0

50個領域是很多。我想你可以用字段名稱組成一個數組,並且每個結果都循環遍歷數組。注意帶'''date'''的時區,因爲它會顯示你的系統配置的時區。 –

回答

0

我想通了。只要改變PDO聲明:

$sql = $DB_CON_C->prepare("SELECT * FROM account WHERE contract_number=:order AND id=:id"); 

$sql = $DB_CON_C->prepare("SELECT *, date_format(register_date,'%m-%d-%Y') register_date FROM account WHERE contract_number=:order AND id=:id") 
0

你可以格式化mysql的日期輸出,但我不是那麼做,這是我在php中做的。

  1. 從查詢創建一個新的DateTime對象
  2. 使用格式()方法獲得所需的格式,然後用新的字符串替換在查詢結果中的值

    $ DATE_STRING =(新\日期時間($ result-> register_date)) - >格式( 'MD-Y');

    $ result-> register_date = $ date_string;

    return $ result;

+0

謝謝,但它沒有奏效。 – ninjachuku