本文介绍了可捕获的致命错误:无法在第114行中将类PDOStatement的对象转换为字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

我正在尝试向数据库中添加一些数据,但出现错误可捕获的致命错误:无法在第114行的/var/www/mandje.php中将类PDOStatement的对象转换为字符串.这是我正在使用的代码:

I'm trying to add some data to my database, but I'm getting the error Catchable fatal error: Object of class PDOStatement could not be converted to string in /var/www/mandje.php on line 114.This is the code I'm using:

 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);

我真的不明白这里出了什么问题.任何帮助将不胜感激:)

I don't really get what's going wrong here. Any help would be much appreciated :)

推荐答案

在注释中,显示以下内容:

In the comments, you show the following:

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

这不是从查询中获取结果的方式.您正在将$max设置为PDOStatement对象.您需要fetch()结果才能使用它.

This is not how you get the result from a query. You are setting $max to a PDOStatement object. You need to fetch() the result in order to use it.

// 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++;

文档: http://www.php.net/pdo.query

P.S. $query->execute();仅对于准备好的语句才需要. query()将立即执行查询.

P.S. $query->execute(); is only needed for prepared statements. query() will execute the query immediately.

这篇关于可捕获的致命错误:无法在第114行中将类PDOStatement的对象转换为字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-08 03:59