如何打印 PDO CRUD 语句和 bindParams 的值 -PHP PDO

How to print PDO CRUD Statements and Values of bindParams -PHP PDO

我是 PDO 新手 PHP。为了实现插入功能,我创建了一个 post 数据函数。这是我的代码。

public function PostData($conn, $table, $data)
    {
        try {
            $query = "INSERT INTO " . $table . "(";
            $arraylen = count($data);
            $keyloopcount = 0;
            foreach ($data as $key => $values) {
                $query .= $key;
                if ($keyloopcount != $arraylen - 1) {
                    $query .= ",";
                }
                $keyloopcount++;
            }

            $valloopcount = 0;
            $query .= ") VALUES (";
            foreach ($data as $key => $values) {
                $query .= "':" . $key . "'";
                if ($valloopcount != $arraylen - 1) {
                    $query .= ",";
                }
                $valloopcount++;
            }

            $query .= ")";

            $stmt = $conn->prepare($query);

            foreach ($data as $key => &$values) {
                $stmt->bindParam(':'.$key, $values, PDO::PARAM_STR);
            }


            if ($stmt->execute()) {
                $stmt->debugDumpParams();
                echo "me";
            } else {
                echo "die";
            }
        } catch (PDOException $ex) {
            echo $ex->getMessage();
        }
    }

当我执行这个查询时。它没有显示任何异常。但是当我查看我的数据库时。它显示插入的记录如下。

我想知道是否有一种方法可以调试绑定参数中的值。如代码所示,我还查找了 $stmt->debugDumpParams();。但是它没有显示参数的值。

需要指导。 TIA.

我整理好了。我犯了一个愚蠢的错误。解决方案是如此简单易行。

解决方案 问题出在代码部分。

foreach ($data as $key => $values) {
                $query .= "':" . $key . "'";
                if ($valloopcount != $arraylen - 1) {
                    $query .= ",";
                }
                $valloopcount++;
            }

将代码更改为:

foreach ($data as $key => $values) {
                $query .= ":" . $key;
                if ($valloopcount != $arraylen - 1) {
                    $query .= ",";
                }
                $valloopcount++;
            }

修改前查询结果:

INSERT INTO cmp_categories(cat_name,cat_slug,cat_desc) VALUES (':cat_name',':cat_slug',':cat_desc')

修改后查询结果:

INSERT INTO cmp_categories(cat_name,cat_slug,cat_desc) VALUES (:cat_name,:cat_slug,:cat_desc)

更清楚,

VALUES 子句中删除了 '':cat_desc' => :cat_desc