我试图将数据从一个表插入到另一个表中,这是我收到的错误消息:
错误:INSERT INTO content2(d1,d2,d3)VALUES(John,Doo,24);
未知专栏' John'在'字段列表'错误:INSERT INTO content2(d1, d2,d3)VALUES(Mary,Moe,36);
未知专栏' Mary'在'字段列表'错误:INSERT INTO content2(d1,d2,d3)VALUES(Julie,Dooley,42)
未知专栏' Julie'在'字段列表中'错误:INSERT INTO content2 (d1,d2,d3)VALUES(John,Doo,24);
未知专栏' John'在'字段列表'错误:INSERT INTO content2(d1,d2,d3)VALUES(Mary,Moe,36);
未知专栏' Mary'在'字段列表'错误:INSERT INTO content2(d1, d2,d3)VALUES(Julie,Dooley,42);
未知专栏' Julie'在'字段列表'
这是我的PHP代码:
//Get Connection
require_once('connect.php');
//Get Data
$sql = "SELECT d1, d2, d3 FROM content";
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
$row1 = $row["d1"];
$row2 = $row["d2"];
$row3 = $row["d3"];
//Insert Data to another table
$sql = "INSERT INTO content2 (d1, d2, d3)
VALUES ($row1, $row2, $row3);";
if (mysqli_multi_query($con, $sql)) {
echo "New records created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($con);
}
//echo "id: " . $row["d1"]. " - Name: " . $row["d2"]. " " . $row["d3"]. "<br>";
}
} else {
echo "0 results";
}
我无法弄清问题是什么。请帮忙
答案 0 :(得分:4)
当PHP将您的插入查询发送给MySQL时,它最终看起来像这样:
INSERT INTO content2 (d1, d2, d3) VALUES (John, Mary, Julie);
因为“John”,“Mary”和“Julie”周围没有引号,MySQL认为您指的是其他列名。快速而肮脏的解决方案是在查询中添加引号,但正如@tadman所说,您不应该使用这种查询方式,而应使用bind_param
将变量添加到查询中。 / p>
但是,如果您要做的只是从一个表复制到另一个表,正如@Dan Bracuk所说,您可以通过一个查询执行此操作:
INSERT INTO content2 (d1, d2, d3)
SELECT d1, d2, d3
FROM content
答案 1 :(得分:2)
这可以用直接sql完成。
insert into content2
(d1, d2, d3)
select d1, d2, d3
from content