PHP将数据从一个表插入另一个表

时间:2015-07-09 16:05:41

标签: php mysql sql

我试图将数据从一个表插入到另一个表中,这是我收到的错误消息:

  

错误: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";
}

我无法弄清问题是什么。请帮忙

2 个答案:

答案 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