【发布时间】:2012-11-29 23:00:29
【问题描述】:
这快把我逼疯了!! 我正在使用 php 将 table1 中的记录插入到 table3 中。然后 还将 table2 插入 table3。
但是,第二个插入不起作用。这是简单的版本:
if ($result = $mysqli->query("TRUNCATE TABLE table3")) {
echo "TRUNCATE table3 ".$result;
}
if ($result = $mysqli->query("INSERT INTO table3 SELECT * FROM table1")) {
echo "table1 inserted ".$result;
}
if ($result = $mysqli->query("INSERT INTO table3 SELECT * FROM table2")) {
echo "table2 inserted ".$result;
}
没有错误等。 在上面的代码中,没有显示“插入的 table2”。
所以我这样做了:
$mysqli->query("TRUNCATE TABLE table3");
$mysqli->query("INSERT INTO table3 SELECT * FROM table1");
$mysqli->query("INSERT INTO table3 SELECT * FROM table2");
再次没有错误,但 table2 没有插入。
我用过:
printf("%s\n", $mysqli->info);
$mysqli->ping();
一切都很好,但我无法执行第二次插入。 为什么它不起作用是没有意义的。
感谢您的帮助,时间!
【问题讨论】:
-
不要
TRUNCATE TABLES- 这是残酷的,应该作为最后的手段。只需创建一个数据库并执行插入、更新和删除操作。请阅读有关 RDBMS 的内容 -
第二个查询失败取决于 table2 的内容和结构,如果结构相同,您可能在主键/唯一键上有重复? [编辑]如果您向我们提供有关表格结构和内容的更多详细信息,我们应该能够对其进行整理。此外,在第二次插入失败后,您应该检查php.net/manual/en/mysqli.error.php 以了解发生了什么。
-
请有人告诉我为什么要截断脚本中的表格。我只将其用作一次性活动 - 也就是非常罕见。
-
Ed -- 我截断是因为它更快而且不需要/理由保留任何东西(至少在我的情况下)