gpt4 book ai didi

PHP:Postgresql 查询中的变量

转载 作者:行者123 更新时间:2023-11-29 13:06:10 25 4
gpt4 key购买 nike

假设我有这两个变量

$number = 1;
$word = "one";

我想在 pg_query 中使用它们。

这是我得到的:

$result = pg_query($con, 'UPDATE a SET z = ARRAY[{$number}] WHERE word = {pg_escape_literal($word)}');

但是没用..

最佳答案

要使用字符串插值,你必须使用双引号:

 $x = 3;
"This works: $x" // This works: 3
'This does not: $x'; // This does not: $x

您也不能像您尝试使用 {pg_escape_literal($word)} 那样将函数调用插入字符串。在将变量插入字符串之前,您需要对其进行转义:

$word_esc = pg_escape_literal($word);
$result = pg_query(
$con,
"UPDATE a SET z = ARRAY[$number] WHERE word = $word_esc"
);

你也可以使用 sprintf:

$result = pg_query(
$con,
sprintf(
"update a set z=ARRAY[%d] where word = %s",
$number,
pg_escape_literal($word)
)
);

但最好和最安全的方法是使用 pg_query_params 函数,因为您不会转义任何参数。而且很容易忘记并使您的站点暴露于 SQL 注入(inject)攻击。

$result = pg_query_params(
'update a set z=ARRAY[$1] where word = $2',
array($number,$word)
)

关于PHP:Postgresql 查询中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11038584/

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