php - 无法让 Ajax 更新按 GROUP CONCAT 分组的 MySQL 行结果。甚至可能吗?
问题描述
我设法让 Ajax 通过单击我要更新的条目来动态更新 MySQL 行结果,这很有效。但是,如果我使用 GROUP CONCAT,我仍然可以单击要更新的条目,但不会保存更改。这是正常的吗?或者这仍然适用于 GROUP CONCAT?
当 mysql 查询不使用组 concat 时有效的当前代码:
这是功能:
function edit_data(id, text, column_name)
{
$.ajax({
url:"food_edit.php",
method:"POST",
data:{id:id, text:text, column_name:column_name},
dataType:"text",
success:function(data){
//alert(data);
}
});
}
这是 food_edit.php
<?php
include ("expenses.inc");
session_start();
$con = mysqli_connect("$server","$user","$pw","$db");
$id = $_POST["id"];
$text = $_POST["text"];
$column_name = $_POST["column_name"];
$query = "UPDATE food SET ".$column_name."='".$text."' WHERE id='".$id."'";
if(mysqli_query($con, $query))
{
echo 'Data Updated';
}
?>
我尝试如下更新代码以补偿组 concat,但它不起作用:
function edit_data(ID, FOOD_TYPE, STORE_NAME, LOCATION, DATUM, COST)
{
$.ajax({
url:"food_edit.php",
method:"POST",
data:{ID:ID, FOOD_TYPE:FOOD_TYPE, STORE_NAME:STORE_NAME, LOCATION:LOCATION, DATUM:DATUM, COST:COST},
dataType:"text",
success:function(data){
//alert(data);
}
});
}
和 food_edit.php:
<?php
include ("expenses.inc");
session_start();
$con = mysqli_connect("$server","$user","$pw","$db");
$id = $_POST["id"];
$FOOD_TYPE = $_POST["FOOD_TYPE"];
$STORE_NAME = $_POST["STORE_NAME"];
$LOCATION = $_POST["LOCATION"];
$DATUM = $_POST["DATUM"];
$COST = $_POST["COST"];
$query = "UPDATE food SET
".$FOOD_TYPE."='".$_POST["FOOD_TYPE"]."',
".$STORE_NAME."='".$_POST["STORE_NAME"]."',
".$LOCATION."='".$_POST["LOCATION"]."',
".$DATUM."='".$_POST["DATUM"]."',
".$COST."='".$_POST["COST"]."'
WHERE ID='".$_POST["ID"]."'";
if(mysqli_query($con, $query))
{
echo 'Data Updated';
}
?>
希望这可以澄清。
我用组 concat 添加了 mysql 查询
$query = "
Select
GROUP_CONCAT(ID,' <br>' ORDER BY DATUM SEPARATOR ' ') AS ID,
GROUP_CONCAT(FOOD_TYPE,' <br>' ORDER BY DATUM SEPARATOR ' ') AS FOOD_TYPE,
GROUP_CONCAT(STORE_NAME,' <br>' ORDER BY DATUM SEPARATOR ' ') AS STORE_NAME,
GROUP_CONCAT(LOCATION,' <br>' ORDER BY DATUM SEPARATOR ' ') AS LOCATION,
GROUP_CONCAT(DATUM,' <br>' ORDER BY DATUM SEPARATOR ' ') AS DATUM,
GROUP_CONCAT(COST,' <br>' ORDER BY DATUM SEPARATOR ' ') AS COST
FROM
(
SELECT food.ID, food.FOOD_TYPE, food.STORE_NAME, food.LOCATION, food.DATUM, food.COST FROM food
) TEST
group by DATUM
ORDER BY DATUM DESC";
解决方案
查看您在后端调用什么以进行更改的示例将有所帮助,但我的猜测是您使用的 API 端点需要一个项目 ID,而现在您要提交多个。一般来说,更新不能包含任何分组,因为它们必须引用特定的行,分组可以通过子选择来完成。
推荐阅读
- css - 删除 FF 和 IE 上文本溢出省略号的多余空格结尾
- postgresql - 如何列出按id分组的表中的文档?
- r - 如何在闪亮的应用程序中创建上传图像的堆栈
- typescript - 打字稿:从应用于键控对象的字符串文字联合推断正确的类型
- powershell - 计算嵌套在其他安全组中的安全组
- android - 图像未在视图寻呼机中加载
- java - 嵌套循环时间复杂度 for( i = n; i > 0; i /= 2) VS for( i = n; i > 0; i/=2) for( j = 0; j < i; j++)
- c - ac 程序上的 8、16、32 和 64 位微控制器上的字长、int 大小和指针是多少?
- hibernate-envers - 如果通过添加新实体更改 @oneToMany - 实体,则修订包含其他字段的空值
- c# - uwp ListView 没有 SelectionChanging 事件