0

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

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

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

<?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

4 回答 4

0

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

$stmt->bindParam(':tickets' , $row['htmlCode']);
于 2013-05-09T16:32:48.697 回答
0

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

不过,修复起来相当简单:

$stmt->bindParam(':tickets' , $row['htmlCode']);
于 2013-05-09T16:33:18.123 回答
0

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

解决方案是这样做:

$stmt->bindParam(':tickets' , $row['htmlCode']);
于 2013-05-09T16:34:01.273 回答
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()));
于 2013-05-09T16:35:07.467 回答