将数据从一个mysql表插入到另一个mysql表中(注意:数组转换为字符串)

时间:2013-05-09 16:30:41

标签: php mysql pdo

我正在尝试从数据库中的表htmlCode获取数据tickets,然后尝试将其插入另一个表users

这是我编写的流动代码,它给了我一个错误提示:数组到字符串转换

我对我的愚蠢有一点想法,我试图将数组插入到数据库中,这应该是一个字符串,那么有没有更简单的方法将数据从一个表传输到另一个表或任何更正我流动的代码?< / p>

<?php
        try{
                $conn = new PDO("mysql:host=localhost;dbname=mydb", "dbuser", "mypass");
            }
            catch(PDOException $pe)
                {
                    die('Connection error, because: ' .$pe->getMessage());
                }

                $sql = "SELECT `htmlCode` FROM `tickets`";
                $stmt = $conn->query($sql);

                if(!$stmt)
                {
                    die("Execute query error, because: ". $conn->errorInfo());
                }

                $row = $stmt->fetch(PDO::FETCH_ASSOC);

                // print_r ($row); //prints an array 


                 $sql = "INSERT INTO users (row) VALUES (:tickets)";
                 $stmt = $conn->prepare($sql);
                 $stmt->bindParam(':tickets' , $row);
                 $stmt->execute();

?>

4 个答案:

答案 0 :(得分:0)

您正在为数据库提取关联数组。您只需要从该数组中获取正确的值,然后绑定它:

$stmt->bindParam(':tickets' , $row['htmlCode']);

答案 1 :(得分:0)

bindParam期望第二个参数是一个字符串,但$row是一个数组。您甚至使用PDO::FETCH_ASSOC,这意味着“关联数组。”

修复起来相当简单:

$stmt->bindParam(':tickets' , $row['htmlCode']);

答案 2 :(得分:0)

fetch_assoc()在PHP中返回一个关联数组,这就是你得到一个数组的原因。

解决方案是这样做:

$stmt->bindParam(':tickets' , $row['htmlCode']);

答案 3 :(得分:0)

您可以使用一个查询执行此操作:

INSERT INTO users (row)
SELECT htmlCode FROM tickets
LIMIT 1 /* since your original script doesn't loop, it only copies one row */

$conn->errorInfo()返回一个数组,而不是字符串,因此您无法直接打印它。尝试:

die("Execute query error, because: ". implode(' ', $conn->errorInfo()));