【发布时间】: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']);
这解决了我的问题。
【问题讨论】:
-
我刚刚更新了代码,因为我意识到我没有包含该文件,所以如何将一个特定行的信息从一个表插入到另一个表
-
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