gpt4 book ai didi

postgresql - Postgres 中更新查询的正确语法是什么?

转载 作者:行者123 更新时间:2023-11-29 14:34:41 25 4
gpt4 key购买 nike

我有一个关于我想做什么的示例查询,但语法在 MySQL 中。

 $sql = "UPDATE tbl_sample SET ".$column_name."='".$text."' WHERE id='".$id."'";  

但它必须使用 Postgres 语法来完成。抱歉,我只是后端编程的新手。

这是一些页面的其他 src主.php

$(document).ready(function(){  
function fetch_data()
{
$.ajax({
url:"dbselect.php",
method:"POST",
success:function(data){
$('#live_data').html(data);
}
});
}
fetch_data();
$(document).on('click', '#btn_add', function(){
var desc = $('#desc').text();
var ipadd = $('#ipadd').text();
var port = $('#port').text();
var platform = $('#platform').text();

if(desc == '')
{
alert("Enter Description");
return false;
}
if(ipadd == '')
{
alert("Enter IP Address");
return false;
}

if(port == '')
{
alert("Enter Port Number");
return false;
}

if(platform == '')
{
alert("Enter DB Platform");
return false;
}
$.ajax({
url:"dbinsert.php",
method:"POST",
data:{desc:desc, ipadd:ipadd, port:port, platform:platform},
dataType:"text",
success:function(data)
{
alert(data);
fetch_data();
}
})
});
function edit_data(id, text, column_name)
{
$.ajax({
url:"dbedit.php",
method:"POST",
data:{id:id, text:text, column_name:column_name},
dataType:"text",
success:function(data){
alert(data);
}
});
} $(document).on('blur', '.desc', function(){
var id = $(this).data("id1");
var desc = $(this).text();
edit_data(id, desc, "desc");
});
$(document).on('blur', '.ipadd', function(){
var id = $(this).data("id2");
var ipadd = $(this).text();
edit_data(id,ipadd, "ipadd");
});

$(document).on('blur', '.port', function(){
var id = $(this).data("id3");
var port = $(this).text();
edit_data(id,port, "port");
});

$(document).on('blur', '.platform', function(){
var id = $(this).data("id4");
var platform = $(this).text();
edit_data(id,platform, "platform");
});

$(document).on('click', '.btn_delete', function(){
var id=$(this).data("id5");
if(confirm("Are you sure you want to delete this?"))
{
$.ajax({
url:"dbdelete.php",
method:"POST",
data:{id:id},
dataType:"text",
success:function(data){
alert(data);
fetch_data();
}
});
}
});
});

这是插入查询:

<?php  
$connect = pg_connect("host=localhost dbname=dbinv user=postgres password=moira port=5432");
$sql = "INSERT INTO \"kbc\".dbinventory(desc,ipadd,port,platform)
values ('".$desc."','".$ipadd."','".$port."','".$platform."')";
if(pg_query($connect, $sql))
{
echo 'Data Inserted';
}
?>

这是我关心的编辑查询:

<?php  
$connect = mysqli_connect("localhost", "root", "", "test_db");
$id = $_POST["id"];
$text = $_POST["text"];
$column_name = $_POST["column_name"];
$sql = "UPDATE tbl_sample SET ".$column_name."='".$text."' WHERE id='".$id."'";
if(pg_query($connect, $sql))
{
echo 'Data Updated';
}
?>

数据库已完成,但仍无法正常工作。我是忽略了还是错过了什么,还是一切都错了??请仔细查看这些 src 并告诉我应该加强/更改哪些。

最佳答案

实际问题是您构建的查询错误得很危险。很可能 $text$id 中有引号或类似内容,因此该语句最终成为无效语法。

例如如果 $textO'Reilly 你会得到:

ERROR: ERROR:  syntax error at or near "Reilly"

请阅读https://en.wikipedia.org/wiki/SQL_injection

您没有提供有关您正在使用的工具/语言/等的任何详细信息,但您应该使用查询参数绑定(bind)(“准备好的语句”)支持您的语言和数据库驱动程序。

假设您使用的是 PHP,请阅读:

不要通过使用自制程序引用的正则表达式或使用不安全的函数(如 PHP 的 addslashes)来“修复”此问题。

如果它在 MySQL 中有效,我假设您在使用它时没有启用 ANSI QUOTES 选项和 “双引号” 标识符。或者您正在尝试使用反斜杠转义,例如 'O\'Reilly',这在符合 ANSI SQL 的数据库中将不起作用。您必须将引号加倍,例如 'O''Reilly'。但见上文;不要那样做,而是在准备好的语句中使用绑定(bind)参数。

关于postgresql - Postgres 中更新查询的正确语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46947270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com