如何打印 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
我是 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