ajax同步更新数据库,AJAX更新多个数据库表

我有一个ajax表从两个MySQL表中读取数据,该表是AJAX更新多个数据库表

project_ownerships - id_own,项目代码,own_current,own_future

项目 - ID,项目,地点,类型,类型2,区域,传输,阶段

数据读入网页表罚款,使用连接表sql查询。

$query_value = isset($_GET['value']) ? $_GET['value'] : "";

$sql = "SELECT project_ownerships.*, projects.*

FROM project_ownerships, projects

WHERE project_ownerships.project = projects.project

AND project_ownerships.code = $query_value'";

$result = $mysqli->query($sql);

但是我无法使编辑更新正常工作。我只能从一个数据库表中获得data - id的值。

使属于projects表更新罚款的任何更新,但project_ownerships任何更新没有价值正确的ID和更新在这里错了DB-记录

的更新功能。该函数将返回错误“不与索引或名称中列id_own”

$.ajax({

url: 'update_multi.php',

type: 'POST',

dataType: "html",

data: {

tablename: editableGrid.getColumnName(columnIndex) == "own_current" ? "project_ownerships" : "projects",

id: editableGrid.getColumnName(columnIndex) == "own_current" ? editableGrid.getValueAt(rowIndex, editableGrid.getColumn("id_own")) : editableGrid.getRowId(rowIndex),

newvalue: editableGrid.getColumnType(columnIndex) == "boolean" ? (newValue ? 1 : 0) : newValue,

colname: editableGrid.getColumnName(columnIndex),

coltype: editableGrid.getColumnType(columnIndex)

},

success: function (...,

error: function(...,

async: true

});

这里的PHP更新

$tablename = $mysqli->real_escape_string(strip_tags($_POST['tablename']));

$id = $mysqli->real_escape_string(strip_tags($_POST['id']));

$value = $mysqli->real_escape_string($_POST['newvalue']);

$colname = $mysqli->real_escape_string(strip_tags($_POST['colname']));

$coltype = $mysqli->real_escape_string(strip_tags($_POST['coltype']));

$id_column = "";

if ($tablename == "projects") {$id_column = "id";} else {$id_column = "id_own";}

if ($stmt = $mysqli->prepare("UPDATE ".$tablename." SET ".$colname." = ? WHERE ".$id_column." = ?")) {

$stmt->bind_param("si",$value, $id);

$return = $stmt->execute();

$stmt->close();

}

基本上就是我想要做的....

如果projects.id从sql中删除更新将不起作用

如果project_ownership.id_own更改为project_ownership.id和projects.id被删除,更新将工作,但只有project_ownership.*领域

所以......我需要在一个名为*.id

单独的SQL查询,当更新发送一列,可以选择正确的表名通过

tablename: editableGrid.getColumnName(columnIndex) == "own_current" ? "project_ownerships" : "projects",

所以使用相同的逻辑

id: editableGrid.getColumnName(columnIndex) == "own_current" ? editableGrid.getValueAt(rowIndex, editableGrid.getColumn("id_own")) : editableGrid.getRowId(rowIndex),

首先,识别出own_current是疗法e,然后将参数传递给editableGrid.getValueAt(rowIndex, editableGrid.getColumn("id_own")),但返回的错误是“没有找到名称为id_own的列”...?

我真的很迷茫..

不能不能有(从SQL删除),否则更新只是冻结

但是当它是有它不能被发现......

任何帮助将是伟大的

怎么可能定义ajax - data - id列或rowIndex列?

我工作的理论,

editableGrid.getRowId(rowIndex)

可能是类似的东西(它显然不是,否则这会工作)

editableGrid.getValueAt(rowIndex, editableGrid.getColumn("id_own"))

,但我也试过,其他

editableGrid.getValueAt(rowIndex, editableGrid.getColumnIndex("id_own"))

返回 “无效的列索引-1”

editableGrid.getValueAt(rowIndex, editableGrid.getColumnName("id_own"))

UPDATE

有一个在editablegrid定义行ID是什么一对夫妇的私有函数。所以我想这使得它成为一个editablegrid的问题,而不是一个真正的javascript,ajax或php问题适合这里

2012-07-05

Ben

+3

你在你粘贴代码的第一位的注入漏洞。您应该转义您在查询字符串中使用的值。或者使用PDO或mysql_real_escape_string –

2012-07-25 00:52:23

+0

就故障排除而言,只是警告“editablegrid”的值或其他值,以确保它传递正确的值 –

2012-07-25 00:55:29

+0

...您还可以将整个editableGrid对象传递给一个php页面,然后执行print_r在$ _POST上以更好地了解结构 –

2012-07-25 00:56:34

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值