gpt4 book ai didi

php - 使用 PHP 进行动态 MySQL 查询

转载 作者:可可西里 更新时间:2023-11-01 07:08:42 25 4
gpt4 key购买 nike

我正在寻找一种对我的 MySQL 服务器进行动态查询的方法。目前这是我用来更新服务器数据的代码:

$deskAttr = json_decode($_POST["desk_attributes"]);

foreach($deskAttr as $key => $value) {
$sql = "UPDATE desk_attributes SET iw_standard=".$value->iw_standard.", avaya_standard=".$value->avaya_standard.", avaya_withcallid=".$value->avaya_withcallid.", avaya_withtransfer=".$value->avaya_withtransfer.", dual_screen=".$value->dual_screen.", air_conditioning=".$value->air_conditioning.", iw_obdialler=".$value->iw_obdialler." WHERE id=".$value->id;
$conn->query($sql);
}

如您所见,SQL 列名称与 deskAttr 键相同。我正在寻找一种使这一行成为循环的方法,以便在向 MySQL 表中添加更多列时无需更改这一行。

它看起来像这样:

$deskAttr = json_decode($_POST["desk_attributes"]);

foreach($deskAttr as $key => $value) {
$sql = "UPDATE desk_attributes SET";
foreach($value as $k => $v) {
$sql .= " $k = $value->$k ,";
}
$sql .= "WHERE id=".$value->id";
}

我应该如何编写上面的代码才能让它真正起作用?


**编辑**

了解$deskAttr 是一个对象数组,并且列的名称与对象键的名称相同可能会有所帮助。

这是我在伪代码中的意思:

foreach($object in $deskAttr) {
$sql = "UPDATE table SET ";
foreach($key in $object) {
if($key != "id")
$sql .= "$key = $object->$key, ";
}
$sql .= "WHERE id = $object->id;
$conn->query($sql);
}

显然,这会在 WHERE 部分之前的查询末尾添加一个额外的逗号,但希望您能理解我想要实现的目标。

最佳答案

您可以通过使用 PHP 的 implode() 稍微更改代码来完成此操作功能。

取一个空白数组,将更新参数连接到它。

如果不是 empty() , implode() 获取字符串。

更新代码:

$sql = "UPDATE desk_attributes SET ";
foreach ($deskAttr as $key => $value) {
$value = mysqli_real_escape_string($link, $value); // $links is database connection string.
$key = mysqli_real_escape_string($link, $key); // $links is database connection string.
$updtAttrs[] = $key ." = '" . $value . "'";
}
$sql .= ! empty($updtAttrs) ? implode(', ', $updtAttrs) : '';
$sql .= " WHERE id=" . $value->id;

关于php - 使用 PHP 进行动态 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45162964/

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