2014-01-27 84 views
3

我有這樣的代碼將從循環輸入獲取日期,使它數組使用地圖功能。PHP的:如何將數組字符串的日期到mysql日期(2014年1月27日)轉換爲(2014-01-27)之前在mysql中更新

var target_completion_date = $('input#target_completion_date').map(function() { 
     return $(this).val(); 
     }).get(); 

該JavaScript的輸出是這樣的在字符串數組:

一分之二十七/ 2014,25/1/2014,29 /二千○十四分之一

的問題是,如何能我編碼更新MySQL或將其保存並轉換爲(2014年1月27日,2014年1月25日,2014年1月25日)(27/1/2014,25/1/2014,29/1/2014)更新到數據庫:

$target_completion_date = $_POST['target_completion_date']; 



> for ($i = 0; $i <5;) { 

> $sql1 = "UPDATE AT_tna_assessment SET identify_needs = '$identify_needs[$i]', activity_required = '$part_c_activity[$i]', 
> priority = '$part_c_priority[$i]', **target_completion_date = ?** , remarks = '$part_c_remark[$i]' 
> WHERE id ='$part_c_id[$i]'"; 

> mysql_query($sql1) or die ("Cant Connect");   
$i++;  
} 

我使用target_completion_date = DATE(STR_TO_DATE('$target_completion_date[$i]','%m-%d-%Y'));但不工作

我已經達到了我的答案。感謝所有

我已經通過此代碼解決了這個問題。謝謝:)

for ($i = 0; $i <5;) { 

    $tb = explode("/", ($target_completion_date[$i])); 
    date_duration_from[$i] = $tb[2] . "-" . $tb[1] . "-" . $tb[0].","; 


    $sql1 = "UPDATE AT_tna_assessment SET identify_needs = '$identify_needs[$i]', activity_required = '$part_c_activity[$i]', priority = '$part_c_priority[$i]', target_completion_date= '$date_duration_from[$i]' , remarks = '$part_c_remark[$i]' WHERE id 
    ='$part_c_id[$i]'"; 


    mysql_query($sql1) or die ("Cant Connect"); 
    $i++; 

    } 
+0

如何可靠的是,輸入格式? –

+0

我從simpleDatePicker腳本得到它...我用javascript對它進行分組並將它發送到分頁數據庫。這一切都以字符串格式 – airi

+1

你很容易受到[SQL注入攻擊](http://bobby-tables.com)... –

回答

2
list($day, $month, $year) = explode('/', '27/1/2014'); 
echo sprintf('%4d-%02d-%02d', $year, $month, $day); 
+0

雖然我已經得到了答案..但你的解決方案簡單,我喜歡它。謝謝..在這個問題上獲得更多的知識。 – airi

3

喜歡的東西......

<?PHP 
$date_array = explode(",", "27/1/2014,25/1/2014,29/1/2014"); 
foreach($date_array as $date) { 
    $timestamp = strtotime($date); 
    $mysql_date[] = date("Y-m-d", $timestamp); 
} 
echo(implode(",", $mysql_date)); 
+0

inb4 mysql注入漏洞:此代碼將用戶輸入轉換爲時間戳,然後轉換爲嚴格控制的字符串輸出。任何注入嘗試都會產生一個'0'時間戳,因此是安全的。 –

+0

對不起,後來...測試這個代碼..我用這個代碼,但只得到1970-01-01 < - 這意味着0000-00-00 ..不是數據 – airi

+0

$ date_array = explode(「,」,「 $ target_completion_date「); – airi

0

試試這個代碼。

$date_array = explode(",", "27/1/2014,25/1/2014,29/1/2014"); 

echo 'Unformat dates: '.implode(",", $date_array).PHP_EOL; 

foreach($date_array as $date) { 
    list($day,$month,$year) = explode('/', $date); 
    $date_fmt[] = date('Y-m-d', strtotime($year.'-'.$month.'-'.$day)); 
} 

echo 'Format dates: '.implode(",", $date_fmt).PHP_EOL; 

輸出:

Unformat dates: 27/1/2014,25/1/2014,29/1/2014 
Format dates: 2014-01-27,2014-01-25,2014-01-29 
+0

海..你的解決方案也可以.. ..謝謝.. :) – airi

相關問題