2014-01-27 69 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

相关问题