首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用PDO php将数据从一个表移动到另一个表

使用PDO php将数据从一个表移动到另一个表
EN

Stack Overflow用户
提问于 2018-08-23 17:21:08
回答 2查看 997关注 0票数 0

我知道这可能会被问到很多次,我只是找不到合适的关键字来搜索我的问题,尽管我在mysqli上找到了几种方法。虽然我想知道是否有人可以帮助我如何在PDO上。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?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:.");
}

更新:下面是我得到的错误

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Parse error: syntax error, unexpected '='

我尝试删除$sql. =,但最后只得到了另一个错误。

我还尝试删除.,但在end Parse error: syntax error, unexpected end of file in处出现相同的错误

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-23 18:23:39

PDO不允许您在单个调用中执行两个查询。因此,您需要准备两个不同的查询,然后分别执行它们。

您应该使用事务来确保数据库在两个查询中是一致的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$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();
}
票数 3
EN

Stack Overflow用户

发布于 2018-08-23 17:47:39

首先,使用; PDO结束每个查询,允许多个查询,但必须正确声明和限制每个查询。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  $sql = 'INSERT INTO table2 SELECT * FROM table1 WHERE id=:id;';
  $sql. = 'DELETE FROM table1 WHERE id=:id';

如果再次出现错误,可能是两个表的模式不匹配(或insert、select不匹配),因此请尝试使用显式列声明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  $sql = 'INSERT INTO table2  (col1, col2, ..,coln) 
            SELECT (col1, col2, ..,coln)  
            FROM table1 
            WHERE id=:id; ';
  $sql. = ' DELETE FROM table1 WHERE id=:id';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51991180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文