1. ホーム
  2. php

[解決済み] Catchable fatal error: 114 行目で PDOStatement クラスのオブジェクトを文字列に変換できませんでした。

2022-02-13 15:49:56

質問

データベースにデータを追加しようとしているのですが、Catchable fatal errorというエラーが表示されます。オブジェクトオブクラスPDOStatementは、文字列に変換できませんでした。 これは、私が使用しているコードです。

 foreach($_SESSION["cart"] as $id => $value){

        $query = $db->query('SELECT * FROM Producten WHERE ProductID ="'.$id.'" ');
        $query->execute();

        while($row = $query->fetch(PDO::FETCH_ASSOC)){
            $price = $row['Prijs'];
            $ProductID = $row['ProductID'];
            }
        $sql="INSERT INTO Bestellingsdetail( Bestelnummer, ProductID, Aantal, Prijs)
        VALUES ($max,$ProductID,$value,$price)";      //<---- line 114
        $count = $db->execute($sql);

何が間違っているのか、よくわからないのです。何か手助けがあれば、とてもありがたいです :)

解決方法は?

コメントで、次のように表示していますね。

$query = $db->query('SELECT MAX( Bestelnummer ) FROM Bestellingsdetail');
$query->execute();
$max = $query;
$max++;

これでは 結果 をクエリから削除します。 あなたが設定しているのは $max を指定します。 PDOStatement オブジェクトを作成します。 あなたが必要なのは fetch() を使用するために、その結果を使用します。

// I've added "AS maxval" to make it easier to get the row
$query = $db->query('SELECT MAX(Bestelnummer) AS maxval FROM Bestellingsdetail');
$max_row = $query->fetch(PDO::FETCH_ASSOC);

$max = $max_row['maxval'];
$max++;

Docs http://www.php.net/pdo.query

追伸 $query->execute(); は、プリペアドステートメントにのみ必要です。 query() はすぐにクエリを実行します。