gpt4 book ai didi

php - 在 postgres 数据库上使用 php 选择一个带有&符号的字符串

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:09 25 4
gpt4 key购买 nike

我正在学校开展一个小组项目,该项目需要使用 php 从 Postgres 数据库中进行选择。在 php 界面中尝试之前,我在 psql dbms 上测试了我的查询。这是我的测试查询:SELECT m.movi​​eid, m.tomatourl FROM movies m WHERE title = 'Beowulf & Grendel';查询确实从我需要的数据库中返回信息,但是在 php 中使用它时它什么也不返回。pg_last_error() 什么也没说。

我怎样才能确保我可以选择其中包含“&”的标题?我试过分离字符串并将它们与 sql 代码放回一起: SELECT m.movi​​eid, m.tomatourl FROM movies m WHERE title = 'Beowulf '||chr(38)||'格伦德尔”我试过转义字符串这是我的一些 php 代码的示例:

$query = 'SELECT m.movieid, m.tomatourl FROM movies m WHERE title = $1';
pg_prepare($conn, "getmovie", $query) or die(pg_last_error());
$result = pg_execute($conn, "getmovie", $i) or die("Query failed: ". pg_last_error());
$movie = pg_fetch_array($result, NULL, PGSQL_BOTH);

只要 $i 数组中的字符串中没有&符号,它就可以工作。我只是将数据库更改为没有符号,但我无法真正控制它。有没有什么方法可以使用 php postgres 函数来执行这样的 select 语句?

最佳答案

问题似乎是由传递给 sql 的字符串周围的引号引起的,通过将字符串直接传递给准备好的语句,就像这样 "Beowulf & Grendel"当它必须像这样传递到数据库时 'Beowulf & Grendel'
似乎即使它没有直接在 var_dump() 中显示在字符串打印输出中
实际上是这样发送的 SELECT m.movi​​eid, m.tomatourl FROM movies m WHERE title = 'Beowulf & Grendel'; 唯一让它知道 var_dump 中的字符数而不是字符串的打印输出的东西。解决方法是对传入的标题执行 html_entity_decode()

特别感谢 DarkBee 和 Daniel Verite 帮助解决了这个问题。

关于php - 在 postgres 数据库上使用 php 选择一个带有&符号的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27346637/

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