我的数据库中有大型表,我尝试动态构建查询,而不是指定每个列名称。
我正在尝试根据收到的 POST 数据在“主板”表中进行更新。我收到的 $data
对象的字段比表的字段多。 (我为一些标志添加了一些字段。)
因此,我正在检索要更新的记录,并通过将其每一列与我的 $data
对象字段进行比较,构建 UPDATE 查询。
我是 php 新手,因此不太了解语法。
这是代码:
<?php
$data = json_decode($_POST["data"], true);
$id = $data["ID"];
include_once 'dbconnect.php';
$query = sprintf("SELECT * FROM `motherboard` WHERE ID = " . $id . ";");
$result = mysqli_query($con, $query);
$existingData = mysqli_fetch_assoc($result);
include_once 'dbclose.php';
$statement = "";
$statement = "UPDATE motherboard SET ";
$flag = false;
foreach ($existingData as $key => $value) {
if ($existingData->$key != $data->$key) {
$statement .= $key . " = " . $data->$key . " , ";
$flag = true;
}
}
if ($flag)
$statement = substr($statement, 0, strrchr($statement, ',') - 1);
$statement .= " WHERE ID = " . $id . ";";
echo $statement;
?>
我的主要问题是在 foreach
循环中。我不知道如何比较 $existingData
和 $data
变量,然后用于构建查询。
我怎样才能实现这个目标?
最佳答案
请不要使用这种方法,如果您想要一个能够超越时代的可靠应用程序,请使用特定的列名称,而不是一些为您构建 SQL 的垃圾 foreach 循环。如果您想避免编写 SQL,请使用 ORM,那里有大量的 ORM,其中大多数从一开始就与框架捆绑在一起,使学习更容易!
简单易学的框架示例:(但不一定是弱框架)
- 蛋糕 PHP
- 拉拉维尔
祝你好运
关于php - 在 PHP 中根据 POST 数据构建动态查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20551413/