[英]Move Data from one table to another table using PDO php
我知道这可能已经问了很多遍了,尽管我找到了几种在mysqli上执行此操作的方法,但我只是找不到合适的关键字来搜索我的问题。 尽管我想知道是否有人可以在PDO上为我提供帮助。
<?php
$dsn = 'mysql:host=localhost;dbname=dbsample';
$username = 'root';
$password = '';
$options = [];
try {
$connection = new PDO($dsn, $username, $password, $options);
}
catch(PDOException $e) {
$id = $_GET['id'];
$sql = 'INSERT INTO table2 SELECT * FROM table1 WHERE id=:id';
$sql. = 'DELETE FROM table1 WHERE id=:id';
$statement = $connection->prepare($sql);
if ($statement->execute([':id' => $id])) {
header("Location:.");
}
更新:这是我得到的错误
Parse error: syntax error, unexpected '='
我试过删除$sql. =
$sql. =
但最后只会得到另一个错误。
还尝试删除.
,并在结尾处Parse error: syntax error, unexpected end of file in
相同的错误Parse error: syntax error, unexpected end of file in
PDO不允许您在单个调用中执行两个查询。 因此,您需要准备两个不同的查询,然后分别执行它们。
您应该使用事务来确保数据库在两个查询之间是一致的。
$stmt1 = $connection->prepare('INSERT INTO table2 SELECT * FROM table1 WHERE id=:id');
$stmt2 = $connection->prepare('DELETE FROM table1 WHERE id=:id');
$connection->beginTransaction();
if ($stmt1->execute([':id' => $id]) && $stmt2->execute([':id' => $id])) {
$connection->commit();
header("Location:.");
} else {
$connection->rollBack();
}
首先以结束每个查询;
PDO允许多个查询,但必须正确声明和终止每个查询。
$sql = 'INSERT INTO table2 SELECT * FROM table1 WHERE id=:id;';
$sql. = 'DELETE FROM table1 WHERE id=:id';
那么如果再次出错,则可能是两个表的模式不匹配(或插入选择不匹配),因此请尝试使用显式列声明
$sql = 'INSERT INTO table2 (col1, col2, ..,coln)
SELECT (col1, col2, ..,coln)
FROM table1
WHERE id=:id; ';
$sql. = ' DELETE FROM table1 WHERE id=:id';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.