Php 如何在其他函数-Postgresql中使用返回id的值作为参数
单击按钮时,我希望发生两件事:Php 如何在其他函数-Postgresql中使用返回id的值作为参数,php,postgresql,Php,Postgresql,单击按钮时,我希望发生两件事: 使用Insert_函数将表单数据插入表_1 使用表_1中新插入行的id作为函数的参数:other_func_name(id) insert_函数如下所示: function insert_function(jsnPolygon, callback) { delete jsnPolygon.id; // makes sure to give it a fresh id $.ajax({ url: 'php/insert_record.
function insert_function(jsnPolygon, callback) {
delete jsnPolygon.id; // makes sure to give it a fresh id
$.ajax({
url: 'php/insert_record.php',
data: jsnPolygon,
type: 'POST',
success: function (response) {
if (response.substr(0, 5) == "ERROR") {
alert(response);
} else {
switch (jsnPolygon.tbl) {
case "table_1":
break;
}
}
},
error: function (xhr, status, error) {
alert("AJAX Error: " + error);
}
});
};
$sqlQuery="INSERT INTO {$table} ({$keys}created, createdby, modified, modifiedby)
VALUES ({$vals}current_date, '{$username}', current_date, '{$username}')
RETURNING id";
$result = $pdo->prepare($sqlQuery);
$result->execute($_POST);
echo $sqlQuery;
$sqlQuery="INSERT INTO {$table} ({$keys}created, createdby, modified, modifiedby)
VALUES ({$vals}current_date, '{$username}', current_date, '{$username}')
RETURNING id as id";
$result = $pdo->prepare($sqlQuery);
$result->execute($_POST);
$id = $result->fetchColumn();
echo $id;
function insert_function(jsnPolygon, callback) {
delete jsnPolygon.id; // makes sure to get a fresh id
return new Promise((resolve, reject)=>{
$.ajax({
url: 'php/insert_record.php',
data: jsnPolygon,
type: 'POST',
success: resolve,
error: reject
});
});
}
insert_记录查询如下所示:
function insert_function(jsnPolygon, callback) {
delete jsnPolygon.id; // makes sure to give it a fresh id
$.ajax({
url: 'php/insert_record.php',
data: jsnPolygon,
type: 'POST',
success: function (response) {
if (response.substr(0, 5) == "ERROR") {
alert(response);
} else {
switch (jsnPolygon.tbl) {
case "table_1":
break;
}
}
},
error: function (xhr, status, error) {
alert("AJAX Error: " + error);
}
});
};
$sqlQuery="INSERT INTO {$table} ({$keys}created, createdby, modified, modifiedby)
VALUES ({$vals}current_date, '{$username}', current_date, '{$username}')
RETURNING id";
$result = $pdo->prepare($sqlQuery);
$result->execute($_POST);
echo $sqlQuery;
$sqlQuery="INSERT INTO {$table} ({$keys}created, createdby, modified, modifiedby)
VALUES ({$vals}current_date, '{$username}', current_date, '{$username}')
RETURNING id as id";
$result = $pdo->prepare($sqlQuery);
$result->execute($_POST);
$id = $result->fetchColumn();
echo $id;
function insert_function(jsnPolygon, callback) {
delete jsnPolygon.id; // makes sure to get a fresh id
return new Promise((resolve, reject)=>{
$.ajax({
url: 'php/insert_record.php',
data: jsnPolygon,
type: 'POST',
success: resolve,
error: reject
});
});
}
插入数据很好,但是如何让其他函数名(id)理解id的值呢
我使用的是PostgreSQL 12.0。插入的
。。。返回
query返回一个行集,就像select
一样。您可以通过调用而不是调用来获取返回的值。经过漫长的两天和多次精神崩溃,我终于解决了这个问题。事实证明,这是问题中的几个挑战
首先,使用fetchColumn
解决了从insert_记录获取id的问题,如下所示:
function insert_function(jsnPolygon, callback) {
delete jsnPolygon.id; // makes sure to give it a fresh id
$.ajax({
url: 'php/insert_record.php',
data: jsnPolygon,
type: 'POST',
success: function (response) {
if (response.substr(0, 5) == "ERROR") {
alert(response);
} else {
switch (jsnPolygon.tbl) {
case "table_1":
break;
}
}
},
error: function (xhr, status, error) {
alert("AJAX Error: " + error);
}
});
};
$sqlQuery="INSERT INTO {$table} ({$keys}created, createdby, modified, modifiedby)
VALUES ({$vals}current_date, '{$username}', current_date, '{$username}')
RETURNING id";
$result = $pdo->prepare($sqlQuery);
$result->execute($_POST);
echo $sqlQuery;
$sqlQuery="INSERT INTO {$table} ({$keys}created, createdby, modified, modifiedby)
VALUES ({$vals}current_date, '{$username}', current_date, '{$username}')
RETURNING id as id";
$result = $pdo->prepare($sqlQuery);
$result->execute($_POST);
$id = $result->fetchColumn();
echo $id;
function insert_function(jsnPolygon, callback) {
delete jsnPolygon.id; // makes sure to get a fresh id
return new Promise((resolve, reject)=>{
$.ajax({
url: 'php/insert_record.php',
data: jsnPolygon,
type: 'POST',
success: resolve,
error: reject
});
});
}
然后,一个新的问题出现在如何构建insert\u函数(jsnPolygon)
上。由于其异步性质,它没有返回任何内容。我用Promise解决了这个问题,并重写如下:
function insert_function(jsnPolygon, callback) {
delete jsnPolygon.id; // makes sure to give it a fresh id
$.ajax({
url: 'php/insert_record.php',
data: jsnPolygon,
type: 'POST',
success: function (response) {
if (response.substr(0, 5) == "ERROR") {
alert(response);
} else {
switch (jsnPolygon.tbl) {
case "table_1":
break;
}
}
},
error: function (xhr, status, error) {
alert("AJAX Error: " + error);
}
});
};
$sqlQuery="INSERT INTO {$table} ({$keys}created, createdby, modified, modifiedby)
VALUES ({$vals}current_date, '{$username}', current_date, '{$username}')
RETURNING id";
$result = $pdo->prepare($sqlQuery);
$result->execute($_POST);
echo $sqlQuery;
$sqlQuery="INSERT INTO {$table} ({$keys}created, createdby, modified, modifiedby)
VALUES ({$vals}current_date, '{$username}', current_date, '{$username}')
RETURNING id as id";
$result = $pdo->prepare($sqlQuery);
$result->execute($_POST);
$id = $result->fetchColumn();
echo $id;
function insert_function(jsnPolygon, callback) {
delete jsnPolygon.id; // makes sure to get a fresh id
return new Promise((resolve, reject)=>{
$.ajax({
url: 'php/insert_record.php',
data: jsnPolygon,
type: 'POST',
success: resolve,
error: reject
});
});
}
最后,点击事件的棘手部分被更改为:
insert_function(jsnPolygon).then(result =>{
var id = result;
other_func_name(id);
})
.catch(err =>{
alert("ERROR")
});
希望对别人有帮助 我对这个很陌生,所以我需要更多的线索。将“执行”更改为“查询”没有帮助。insert_函数中不应该有“return id;”或其他内容吗?是的,对query()的调用将返回一个行集。ID将位于第一行的第一列中。