[英]Copying date from one table to another and change format in mysql
我正在嘗試使用以下代碼將日期(Ymd)從一個數據庫表復制到格式為(Ymd 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”代碼不起作用,因為在table2上添加的日期是“ 0000-00-00 00:00:00”,並且我確定table1上的日期是例如2017-02-13。 可以檢查我的代碼在哪里錯誤? 我檢查了幾乎相同的其他問題,並按照它們進行操作,但是我的結果從未奏效。
謝謝
您可以這樣做:
INSERT INTO `table2` (id_product, date_add)
SELECT prod_id, date
FROM table1;
如果date
是date
數據類型,且date_add
是datetime
,則將添加時間部分並將其自動設置為午夜。
首先,您的代碼有幾個問題。 一個不錯的IDE會在編輯器中向您顯示。
mysqli_set_charset($con1, 'utf8');
在確保建立連接之前,您嘗試使用連接設置字符集。
if (!$con1)
{
die(mysqli_connect_error($con1));
}
mysqli_connect_error()
不帶任何參數, $con1
為false
。
$id_product = $row[prod_id];
沒有常量prod_id
。 您的意思是$id_product = $row['prod_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_add
是一個字符串,需要用引號引起來。
如果您在數據庫表中使用正確的類型,MySQL會在日期上自動添加00:00:00
,因此您無需直接解決該問題,正如Gordon Linoff所說。
如果不是這種情況,則日期仍將作為字符串傳輸,因此簡單的字符串連接解決了該問題。
$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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.