gpt4 book ai didi

postgresql - Postgres INSERT INTO 查询错误?

转载 作者:行者123 更新时间:2023-11-29 12:34:24 26 4
gpt4 key购买 nike

以下 Postgres 查询有什么问题?

INSERT INTO kayak.airports(name, x, y, city) VALUES( $name, $x, $y, $city) 
WHERE airport_id='$airport_id

编辑(感谢 Donnie 帮助我取得进步):我试过:

$query="UPDATE kayak.airports SET name=$name, x = $x, y = $y, city = $city
WHERE airports.airport_id='$airport_id'";

它说“‘布里斯类’列不存在”(布里斯类是第一个要插入的城市。)我取出了 SET 和 WHERE 之间的所有内容,除了“x=$x”,这些都成功插入了。同上“y=$y”。当只留下 name=$name 它说

"Query failed: ERROR: syntax error at or near "International" LINE 1: UPDATE kayak .airports SET name=Brisbane International WHERE... ^"

最佳答案

您的查询字符串未被引用。不要使用 PHP 变量插值来构建 SQL 查询,因为这会使您的脚本或应用程序容易受到 SQL 注入(inject)攻击。

相反,使用参数化查询。因此,您上面的查询变为:

$query = 'UPDATE kayak.airports SET name = $1, x = $2, y = $3, city = $4'.
'WHERE airports.airport_id = $5';

然后,您将使用参数化查询调用函数pg_query_params传递所需的参数:

$result = pg_query_params($query, $parameters)

其中 $parameters 是一个参数数组。

另请注意 $query 字符串是单引号的,因为 $n 占位符不用于插值。这可以防止任何错误(例如通过先碰撞字母来键入真实的变量名)并消除 SQL 注入(inject)的任何可能性。

关于postgresql - Postgres INSERT INTO 查询错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4466466/

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