【问题标题】:PDO insert information from one database to anotherPDO 将信息从一个数据库插入到另一个数据库
【发布时间】:2015-02-04 22:40:05
【问题描述】:

我试图将信息从一个数据库表插入到另一个,但它似乎不起作用。

这是我的approval.php文件=

<?php
if($_POST['approve']) {
$mysql = "INSERT INTO approved_videos WHERE id = " . $info['id'] . " SET `title` = '" . $info['title'] . "', `description` = '" . $info['description'] . "', `name` = '" . $info['name'] . "', `email` = '" . $info['email'] . "', `country` = '" . $info['country'] . "', `videotmp` = '" . $info['videotmp'] . "', `videotype` = '" . $info['videotype'] . "', `videosize` = " . $info['videosize'] . ", `videopath` = '" . $info['videopath'] . "'";
$dbh->exec($mysql) or die(print_r($dbh->errorInfo(), true));
}
?>

这里是显示带有批准或拒绝按钮的信息的页面,单击批准后,信息将从一个数据库表传输到另一个数据库表=

<body>
<div id="wrapper">
<div id="navigation">
<ul>
    <li><a href="homelink.com">Home</a></li>
    <li><a href="logoutlink.php">Logout</a></li>
</ul>
</div>
<div id="right-content">
<?php
$dir = dirname("connection/directory");
require($dir . 'thisismyconnectionfile.php');

$dbh = pdo_videos();

$stmt = $dbh->query("SELECT * FROM videos");
$stmt->setFetchMode(PDO::FETCH_ASSOC);

    while ($info = $stmt->fetch()) {
    echo "<table width=\"100%\">";
    echo "<tr>";
    $coverid = $info['id']; 
    echo "<td>" . $info['title'] . "</td>";

    $smalldesc = substr($info['description'], 0, 50) . "...";

    echo "<td>" . $smalldesc . "</td>";
    echo "<td>" . $info['name'] . "</td>";
    echo "<td>" . $info['country'] . "</td>";

    include("process/approve.php");

    echo "<td width='100px'><form action='" . htmlspecialchars($_SERVER["PHP_SELF"]) . "' method='post'><input type='submit' name='approve' value='Approve' /></form></td>";
    echo "<td width='100px'><form action='process/decline.php' method='post'><input type='submit' name='decline' value='Decline' /></form></td>";
    echo "</tr>";
    echo "</table>";
}
?>   
</div>
</div>
</body>

有谁知道我哪里出错了?

编辑

我已将查询更改为以下内容 -

"INSERT INTO approved_videos(title,desc,name,email,country,videotmp,videotype,videosize,videopath) SELECT videos.title,videos.desc,videos.name,videos.email,videos.country,videos.videotmp,videos.videotype,videos.videosize,videos.videopath FROM videos WHERE id = videos.id";

在错误日志中我收到以下错误 -

PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'desc,name,email,country,videotmp,videotype,videosize,videopath) SELECT videos.ti' at line 1' in /bla/bla/bla/process/approve.php:4

任何想法如何解决这个问题?

更新编辑

好的,所以我正在阅读 mysql 网站,环顾四周,玩弄我的代码,我将查询编辑为以下内容 -

$mysql = $dbh->prepare("INSERT INTO approved_videos(approved_videos.title,approved_videos.desc,approved_videos.name,approved_videos.email,approved_videos.country,approved_videos.videotmp,approved_videos.videotype,approved_videos.videosize,approved_videos.videopath) SELECT videos.title,videos.desc,videos.name,videos.email,videos.country,videos.videotmp,videos.videotype,videos.videosize,videos.videopath FROM videos WHERE videos.id = :id");

它运行该查询,我没有收到任何错误,但是它实际上并没有将视频表中的信息插入到approved_videos 表中,所以我错过了什么吗?

已修复

好的,所以在玩了更多而不是包含它之后,我只是从approve.php文件中执行了它,但是在我放入的操作中

'process/approve.php?id='" . $info['id'] . ">

在我的approve.php文件中我有查询我将id更改为-

videos.id = :id

但也加了-

$mysql->bindParam(":id" ,$_GET['id']);

这解决了我的问题。

【问题讨论】:

  • INSERT 没有WHERE 子句,UPDATE 有。另外,$info 是从哪里/如何填充的?
  • 我刚刚更新了代码,因为我意识到我没有包含该文件,所以如何将一个特定行的信息从一个表插入到另一个表
  • dev.mysql.com/doc/refman/5.0/en/insert-select.html - INSERT SELECT 但确实支持WHERE 子句;这就是您最可能需要使用的。
  • 我在正确的路线上 - $mysql = "INSERT approved_videos(title, description,name,email,country,videotmp,videotype,videosize,videopath) SELECT videos.title,videos.description,videos.name,videos.email,videos.country,videos.videotmp,videos.videotype,videos.videosize,videos.videopath FROM videos WHERE id = videos.id";
  • 您忘记了 INSERT approved_videos - INSERT INTO approved_videos 的“进入”一词。试一试,看看你会得到什么。

标签: php mysql pdo insert fetch


【解决方案1】:

你的sql错了,试试这样:

$mysql = "INSERT INTO approved_videos SELECT * FROM videos where id = ".$info['id'];

【讨论】:

  • 不,这似乎也不起作用,但还是谢谢
  • 查看它记录的错误日志 - PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY'' in /bla/bla/bla/process/approve.php:4
  • 将查询更改为表的字段,但没有自动增量。主键。例如:INSERT INTO table (field1, field2, field3) SELECT field1, field2, field3 FROM table WHERE id=:id
  • 两个表的结构一样吗?从 appoved_videos 中删除主键字段,然后重试。
  • 我将其更改为 :id 仍然没有运气,我在编辑部分收到错误消息
猜你喜欢
  • 2014-11-21
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2015-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多