大家好,我正在寻找一种方法来对我的
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列名称与thedeskAttrkeys相同.我正在寻找一种方法来使这一行成为一个循环,这样如果我要向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";
}
我如何编写上面的代码,以便它真的有效?
谢谢.
编辑
也许知道$deskAttris对象数组和列的名称与对象键的名称相同会有所帮助.
这是我在伪代码中的意思:
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部分之前的查询末尾添加一个额外的逗号,但希望你能得到我想要实现的目标.