Php 在while循环外使用变量

Php 在while循环外使用变量,php,Php,我试图在foreach循环中的while循环之外使用一个变量,但它在循环中工作并显示正确的日期。但是当在循环外使用时,它会显示错误的日期01/01/1970 如果有人能指出我的错误,我将不胜感激。非常感谢 $Destdate = $_POST['box_rtv']; $brtvarray = array(); $brtvarray = $Destdate; $ddate = array(); foreach ($brtvarray as $destbox) { $s

我试图在foreach循环中的while循环之外使用一个变量,但它在循环中工作并显示正确的日期。但是当在循环外使用时,它会显示错误的日期
01/01/1970

如果有人能指出我的错误,我将不胜感激。非常感谢

  $Destdate = $_POST['box_rtv'];
  $brtvarray = array();
  $brtvarray = $Destdate;
  $ddate = array();

  foreach ($brtvarray as $destbox) {
    $sql = "SELECT destroydate FROM act WHERE item = '".$destbox."'";
    $result = mysqli_query($conn, $sql) or die('Error selecting item: ' . mysqli_error($conn));
    if (mysqli_num_rows($result) > 0) {
      while ($row_code = mysqli_fetch_array($result)) {
      $ddate[] = date('d/m/Y', strtotime($row_code['destroydate']));
      }
    }
  }

    $company = strtoupper(mysqli_real_escape_string($conn, $_POST['rtvcompany']));
    $activity = "Box Retrieval";
    $address = ucwords(mysqli_real_escape_string($conn, $_POST['address']));
    $service = ucwords(mysqli_real_escape_string($conn, $_POST['service']));
    $success = 'SUCCESS';
    $authorised = ucwords(mysqli_real_escape_string($conn,$_SESSION['ls_name_usr']));
    $dept = strtoupper(mysqli_real_escape_string($conn,$_POST['rtvdept']));
    $boxitems = $_POST['box_rtv'];
    $box = implode(",",$boxitems);
    $array = array();
    $array = $boxitems;

    foreach ($array as $boxes) {
        $outString .= "$box" . "  ";

        $sql = "INSERT INTO `act` (service, activity, department, company, address, `user`, `date`, destroydate, item, new) VALUES ('$service', '$activity', '$dept', '$company', '$address', '$authorised', NOW(), '".$ddate."', '$boxes', 1)";
        $result = mysqli_query($conn, $sql) or die ('Error inserting box:' . mysqli_error($conn));

        $sql = "UPDATE boxes SET status = 1 WHERE customer = '$company' AND custref = '$boxes'";
        $result = mysqli_query($conn, $sql) or die ('Error updating box:' . mysqli_error($conn));

        $sql = "UPDATE files SET boxstatus = 1 WHERE customer = '$company' AND boxref = '$boxes'";
        $result = mysqli_query($conn, $sql) or die ('Error updating filebox:' . mysqli_error($conn));
    }

    $json = array($box);
    $result = json_encode($json);
    echo $result;

如果您的目标是拥有日期数组,即$ddate,那么此行

$ddate = date('d/m/Y', strtotime($row_code['destroydate']));
应该是:

$ddate[] = date('d/m/Y', strtotime($row_code['destroydate']));

如果您的目标是拥有日期数组,即$ddate,那么此行

$ddate = date('d/m/Y', strtotime($row_code['destroydate']));
应该是:

$ddate[] = date('d/m/Y', strtotime($row_code['destroydate']));

您在
date
中没有使用任何标准格式的
year
,因此首先您需要将其设置为标准格式,即2018年全年
或18年

$row_code['destroydate'] = '29/05/018';
$dt_arr = explode("/",$row_code['destroydate']);
$dt_arr[2] = 2000+$dt_arr[2];
$dt = implode("/",$dt_arr);
$date = DateTime::createFromFormat('d/m/Y', $dt);
echo $date->format('Y-m-d');

您在
日期
中没有使用任何
的标准格式,因此首先您需要将其标准化为2018年
全年
或18年

$row_code['destroydate'] = '29/05/018';
$dt_arr = explode("/",$row_code['destroydate']);
$dt_arr[2] = 2000+$dt_arr[2];
$dt = implode("/",$dt_arr);
$date = DateTime::createFromFormat('d/m/Y', $dt);
echo $date->format('Y-m-d');

共享
$row\u code['destroydate']
?@C2486的样本值应该是:
29/05/018
谢谢您确定年份是
018
而不是
2018
18
?共享
$row\u code['destroydate']
?@C2486应该是:
29/05/018
谢谢您确定年份是
018
,而不是
2018
18
?这很有效,但在mysql查询中使用变量时不起作用。它将日期输入为
0000-00-00
。我试图在表上进行查找,然后在foreach循环中使用var$ddate进行mysql插入。我将更新我的代码以反映这一点。如果
$row['destroydate']=“29/05/2018”
,那么
$ddate[]=$row['destroydate']
如果在MySQL表中,字段格式是
datetime
,那么在插入查询中使用日期之前,您应该将日期转换为正确的格式,即
Y-m-d H:s
。您可以在这个问题中了解更多信息,它是一个日期字段。感谢您将$ddate作为数组,但在第二个foreach循环中,您将它用作插入查询中的标量。回显生成的SQL查询字符串并查看其外观。我想你们会发现这并不是你们所期望的。这是可行的,但当我在mysql查询中使用变量时就不行了。它将日期输入为
0000-00-00
。我试图在表上进行查找,然后在foreach循环中使用var$ddate进行mysql插入。我将更新我的代码以反映这一点。如果
$row['destroydate']=“29/05/2018”
,那么
$ddate[]=$row['destroydate']
如果在MySQL表中,字段格式是
datetime
,那么在插入查询中使用日期之前,您应该将日期转换为正确的格式,即
Y-m-d H:s
。您可以在这个问题中了解更多信息,它是一个日期字段。感谢您将$ddate作为数组,但在第二个foreach循环中,您将它用作插入查询中的标量。回显生成的SQL查询字符串并查看其外观。我想你会发现这不是你所期望的。