Php 在while循环外使用变量
我试图在foreach循环中的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
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查询字符串并查看其外观。我想你会发现这不是你所期望的。