0

htmlCodeデータベースのテーブルからデータを取得しようとticketsしていて、それを別のテーブルに挿入しようとしていますusers

これが私が書いたフローコードであり、エラーが発生します注意:配列から文字列への変換

Array をデータベースに挿入しようとしているという愚かさについて少し考えていますが、これは文字列である必要があります。したがって、あるテーブルから別のテーブルにデータを転送する簡単な方法や、フローコードの修正はありますか?

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

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 に答える
0

bindParamは、2 番目の引数が文字列であることを期待しています$rowが、配列です。PDO::FETCH_ASSOC「連想配列」を意味する も使用します。

ただし、修正はかなり簡単です。

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

連想配列をデータベースにフェッチしています。その配列から適切な値を取得してバインドするだけです。

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