[英]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.