Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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
Php 在mysql中将日期从一个表复制到另一个表并更改格式_Php_Mysql_Date - Fatal编程技术网

Php 在mysql中将日期从一个表复制到另一个表并更改格式

Php 在mysql中将日期从一个表复制到另一个表并更改格式,php,mysql,date,Php,Mysql,Date,我正在尝试将日期(Y-m-d)从一个数据库表复制到另一个数据库表,格式为(Y-m-d H:I:s),代码如下: <?php $host = "host"; $user = "user"; $password = "pass"; $database1 = "home"; $database2 = "teste"; $con1 = mysqli_connect($host, $user, $password, $database1); mysqli_set_cha

我正在尝试将日期(Y-m-d)从一个数据库表复制到另一个数据库表,格式为(Y-m-d H:I:s),代码如下:

<?php
  $host = "host";
  $user = "user";
  $password = "pass";
  $database1 = "home";
  $database2 = "teste";

  $con1 = mysqli_connect($host, $user, $password, $database1);
  mysqli_set_charset($con1, 'utf8');
  if (!$con1) {die(mysqli_connect_error($con1));}

  $select = "SELECT * FROM table1";
  $result = mysqli_query($con1, $select) or die(mysqli_error($con1));

  while($row = mysqli_fetch_assoc($result)) {

    $id_product = $row[prod_id];
    $date = date_create_from_format('Y-m-d', '$row[date]');
    $date_add = date_format($date, 'Y-m-d H:i:s');

    $con2 = mysqli_connect($host, $user, $password, $database2);
    mysqli_set_charset($con2, 'utf8');
    if (!$con2) {die(mysqli_connect_error($con2));}

    $ins = "INSERT INTO `table2` (id_product, date_add) VALUES ('$id_product',$date_add)";
    $mysq = mysqli_query($con2, $ins) or die(mysqli_error($con2));
  }
?>
您只需执行以下操作:

INSERT INTO `table2` (id_product, date_add)
    SELECT prod_id, date
    FROM table1;

如果
date
date
数据类型,并且
date\u add
datetime
,则时间部分将被添加并自动设置为午夜。

首先,您的代码有几个问题。一个像样的IDE会在编辑器中向您展示这一点

代码问题 在确保连接已建立之前,您正在尝试使用连接设置字符集

if (!$con1)
{
    die(mysqli_connect_error($con1));
}
mysqli\u connect\u error()

    $id_product = $row[prod_id];
没有常数
产品id
。你的意思是
$id\u product=$row['prod\u id']取而代之

    $date       = date_create_from_format('Y-m-d', '$row[date]');
您试图从文本字符串
'$row[date]'
生成日期,而不是从数据库中获取的日期,即
$row['date']

    $con2 = mysqli_connect($host, $user, $password, $database2);
您正在为每个记录创建一个新的数据库连接,而不用在使用后关闭它

    $ins = "INSERT INTO `table2` (id_product, date_add) VALUES ('$id_product',$date_add)";
$date\u add
是一个字符串,需要引用

你的问题 如果您在数据库表中使用了正确的类型,MySQL将自动将
00:00:00
添加到日期,因此您不需要直接解决这个问题,正如Gordon Linoff所述

如果不是这样,日期仍然作为字符串传输,因此简单的字符串连接解决了这个问题

$date_add = $row['date'] . ' 00:00:00';
重构代码 在建议的清理之后,您的代码如下所示(并执行您想要的操作):


$date_add = $row['date'] . ' 00:00:00';
<?php
$host      = "host";
$user      = "user";
$password  = "pass";
$database1 = "home";
$database2 = "teste";

$source = mysqli_connect($host, $user, $password, $database1) or die(mysqli_connect_error());
mysqli_set_charset($source, 'utf8');

$target = mysqli_connect($host, $user, $password, $database2) or die(mysqli_connect_error());
mysqli_set_charset($target, 'utf8');

$sql    = "SELECT * FROM table1";
$result = mysqli_query($source, $sql) or die(mysqli_error($source));

while ($row = mysqli_fetch_assoc($result))
{
    $id   = $row['prod_id'];
    $date = $row['date'] . ' 00:00:00';
    $sql  = "INSERT INTO `table2` (id_product, date_add) VALUES ('$id','$date')";
    mysqli_query($target, $sql) or die(mysqli_error($target));
}

mysqli_close($target);
mysqli_close($source);