gpt4 book ai didi

php - 在 PHP 中使用 PDO 更新 MySQL 数据库

转载 作者:行者123 更新时间:2023-11-29 12:26:46 26 4
gpt4 key购买 nike

环顾四周,这让我发疯,尝试使用 PDO 和可变大小的数组在 PHP 中进行基本更新,这是我的代码:

function Database_Update($table,$set,$where) {
$con = DB_PDO_Connect();

//Create bind array that picks up values as they have places made for them
$bind = array();

//Write SET part of statement, with ? as variable places
$prep = "UPDATE $table SET ";
foreach ($set as $key => $value){
$prep .= $key."=?, ";
$bind[] = $value;
}
$prep = rtrim($prep, " ,") . " ";

//Write WHERE part of statment, with ? as variable places
$prep .= "WHERE ";
foreach ($where as $key => $value){
$prep .= $key . "=?, ";
$bind[] = $value;
}
$prep = rtrim($prep, " ,");

var_dump($prep);
echo('<br>');
var_dump($bind);
echo('<br>');
var_dump($table);

try {
$stmt = $con->prepare($prep);
$stmt->execute($bind);
echo $affected_rows = $stmt->rowCount();
//$a_data = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $e->getMessage(), E_USER_ERROR);
}

$con = null;
}

在代码中,$prep 输出如下所示:

string(138) "UPDATE Test SET Group=?, PartName=?, PartNum=?, NumInstock=?, Shelf=?, NumUsed=?, Distributor=?, DistributorPartNum=?, Cost=? WHERE DBid=?"

$bind 变量如下所示:

array(10) { [0]=> string(0) "" [1]=> string(24) "Bearing C Spherical" [2]=> string(5) "Hello" [3]=> string(1) "5" [4]=> string(27) "Black Bearing Box 2 shelf 3" [5]=> string(1) "0" [6]=> string(3) "FKS" [7]=> string(6) "GE 8 C" [8]=> string(0) "" [9]=> int(6) }

除了 BDid 列采用 int 格式外,所有列均采用 TEXT 格式。我已经使用未准备的语句顺利运行了代码,但我认为我会使用相同的数据和相同的表来更新它。

不会返回任何错误,但不会影响任何行。

最佳答案

GROUPreserved word在 MySQL 中,因此您必须转义它才能在查询中使用它,在 PDO 查询中就像在普通查询中一样。反引号即可:

所以你必须更改为这些行:

$prep .= "`$key`=?, ";
...
$prep .= "`$key`=?, ";

关于php - 在 PHP 中使用 PDO 更新 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28200384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com