簡體   English   中英

將數據從一個 sql 表復制到另一個具有較少列數和不同列的表

[英]copy data from one sql table to another having less number of columns and a different column

我有一個名為books的 SQL 表,其中包含Name, ID, Author, Language, Pages, Genres, and Status列。 現在,我想將此表的Name, ID, Author, and Status列中的數據復制到另一個名為log的表中,該表具有列Name, ID, Author, Status and TimeStamp. . 我從 PHP 代碼中獲取TimeStamp ,我想通過 INSERT 語句發送該代碼。

日志架構

這是書籍表的架構

這是我一直在嘗試的代碼:

$queryBook = $_GET['ID'];
$currentDate = date('d-m-Y H:i:s');
$stmt4 = $conn -> prepare("INSERT INTO log (Name, ID, Author, Status) SELECT (Name, ID, Author, Status), ? FROM books WHERE ID = '$queryBook'");
$stmt4 -> bind_param('s', $currentDate);
$stmt4 -> execute();

我也試過這段代碼:

$stmt4 = $conn -> prepare("INSERT INTO log * SELECT Name, ID, Author, Status FROM books WHERE ID = '$queryBook'");
$stmt4 -> execute();

我收到此錯誤: Fatal error: Uncaught Error: Call to a member function execute() on boolean

您應該使用默認值在表中設置日期時間。 因此,您不需要傳遞它。另一方面,您應該將$queryBook作為參數發送。 因此,我建議將表日志定義為:

create table log (
   . . . 
   timestamp datetime default now()
);

然后您的代碼將如下所示:

$stmt4 = $conn -> prepare("INSERT INTO log (Name, ID, Author, Status) SELECT Name, ID, Author, Status FROM books WHERE ID = ?");
$stmt4 -> bind_param('s', $queryBook);
$stmt4 -> execute();

我嘗試了其他一些事情,最終,我讓它工作了。

這是工作代碼:

$stmt4 = $conn -> prepare("INSERT INTO log (Name, ID, Author, Status, TimeStamp) SELECT Name, ID, Author, Status, ? FROM books WHERE ID = ?");
$stmt4 -> bind_param('ss', $currentDate, $queryBook);
$stmt4 -> execute();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM