Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP:在mysql中更新之前,如何将日期数组字符串转换为mysql日期(2014年1月27日)到(2014-01-27)_Javascript_Php_Mysql_Arrays - Fatal编程技术网

Javascript PHP:在mysql中更新之前,如何将日期数组字符串转换为mysql日期(2014年1月27日)到(2014-01-27)

Javascript PHP:在mysql中更新之前,如何将日期数组字符串转换为mysql日期(2014年1月27日)到(2014-01-27),javascript,php,mysql,arrays,Javascript,Php,Mysql,Arrays,我有这个代码,将获得从循环输入的日期,使其数组使用映射函数 var target_completion_date = $('input#target_completion_date').map(function() { return $(this).val(); }).get(); 此JavaScript的输出在字符串数组中如下所示: 2014年1月27日、2014年1月25日、2014年1月29日 问题是,如何对更新MySQL进行编码或将(2014年1月27日,2

我有这个代码,将获得从循环输入的日期,使其数组使用映射函数

var target_completion_date = $('input#target_completion_date').map(function() {
       return $(this).val();
       }).get();
此JavaScript的输出在字符串数组中如下所示:

2014年1月27日、2014年1月25日、2014年1月29日

问题是,如何对更新MySQL进行编码或将(2014年1月27日,2014年1月25日,2014年1月29日)转换为(2014-01-272014-01-252014-01-25),然后再保存并更新到数据库:

$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++;       
}

有点像

<?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));
试试这段代码

$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

那个输入格式有多可靠?我从simpleDatePicker脚本中得到的。。。我用javascript将其分组,并将其发送到proses数据库。这一切都是字符串格式的…@user3238836我对simpleDatePicker不太熟悉,但就个人而言,如果一个网站试图将荒谬的m/d/y格式强加给我,我会非常生气;)呵呵。。您可以这样想一个数组(2014年1月27日,2014年1月25日,2014年1月29日),在发送到sql之前如何转换为这个数组(2014-01-272014-01-252014-01-25…)inb4 mysql注入漏洞:此代码将用户输入转换为时间戳,然后转换为严格控制的字符串输出。任何注入尝试都只会导致
0
时间戳,因此是安全的。很抱歉,测试此代码太晚了。。我使用了这段代码,但只得到了1970-01-01$date\u array=explode(“,”,“$target\u completion\u date”);从你的例子中,我得到的是“1970-01-011970-01-011970-01-01”,而不是2014-01-27等等etc@user3238836正确,此示例不正确,因为
strotime
不接受日期格式
dd/mm/YYYY
。但它将接受
dd-mm-YYYY
。您应该在foreach中使用CBroe给出的答案,如:。或者,使用这样的解决方案:尽管我已经得到了答案。。但你的解决方案很简单,我喜欢。谢谢对这件事有更多的了解。
$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