我有一个示例查询我想要做什么,但语法是在MySQL中。
$sql = "UPDATE tbl_sample SET ".$column_name."='".$text."' WHERE id='".$id."'";
但必须使用Postgres语法完成。抱歉,我只是后端编程的新手。
这是某些页面的其他src main.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并告诉我哪些应该加强/改变。
答案 0 :(得分:2)
实际问题是您构建的查询存在危险错误。最有可能$text
或$id
中有引号或类似内容,因此该语句的语法无效。
e.g。如果$text
为O'Reilly
,您将获得:
ERROR: ERROR: syntax error at or near "Reilly"
请阅读https://en.wikipedia.org/wiki/SQL_injection
您没有提供有关您正在使用的工具/语言/等的任何详细信息,但您应该使用查询参数绑定(“预备语句”)支持您的语言和数据库驱动程序。
假设您使用的是PHP,请阅读:
使用正则表达式进行自制引用,或者使用PHP addslashes
等不安全函数,不“修复”这个。
如果在MySQL中有效,我假设您在没有启用ANSI QUOTES
选项和"double quoted"
标识符的情况下使用它。或者你试图使用反斜杠进行转义,例如'O\'Reilly'
,在ANSI SQL兼容数据库中无法正常工作。您必须将引号加倍,例如'O''Reilly'
。但见上文;不要这样做,而是在预准备语句中使用绑定参数。