Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在postgres数据库上使用php选择带有符号和的字符串_Php_Database_Postgresql_Ampersand - Fatal编程技术网

在postgres数据库上使用php选择带有符号和的字符串

在postgres数据库上使用php选择带有符号和的字符串,php,database,postgresql,ampersand,Php,Database,Postgresql,Ampersand,我在学校做一个小组项目,需要用php从Postgres数据库中进行选择。 在php界面中尝试查询之前,我在psql dbms上测试了我的查询。这是我的测试查询: 从电影m中选择m.movieid、m.tomatourl,其中title='Beowulf&Grendel' 该查询确实会从我需要的数据库返回信息,但是在php中使用该查询时,它不会返回任何信息。 pg_last_error()什么也没说 我可以通过什么方式确保我可以选择带有符号(&)的标题? 我尝试过将字符串分离,并使用sql代码将它

我在学校做一个小组项目,需要用php从Postgres数据库中进行选择。 在php界面中尝试查询之前,我在psql dbms上测试了我的查询。这是我的测试查询:
从电影m中选择m.movieid、m.tomatourl,其中title='Beowulf&Grendel'
该查询确实会从我需要的数据库返回信息,但是在php中使用该查询时,它不会返回任何信息。
pg_last_error()什么也没说

我可以通过什么方式确保我可以选择带有符号(&)的标题? 我尝试过将字符串分离,并使用sql代码将它们重新组合在一起:
从电影m中选择m.movieid,m.tomatourl,其中title='Beowulf'| | | chr(38)| | | Grendel'
我试过摆脱束缚 这是我的一些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()中,它也会显示出来

实际上是这样发送的:从电影m中选择m.movieid,m.tomatourl,其中title='Beowulf&;格伦德尔'是唯一一个在var_转储中给出字符计数而不是字符串打印输出的东西。解决方法是对传入的标题执行
html\u entity\u decode()



特别感谢DarkBee和Daniel Verite帮助解决此问题。

您确定
&
存储为
&
而不是
&?我不相信我是,如果它像那样存储,var_dump()会那样显示吗?
从电影m中选择m.movieid,m.tomatourl,其中title='Beowulf'| | | chr(38)| | |'Grendel'
这本应确保不会发生,但它没有起作用
chr()
使用的是sql而不是php。这一个也可以直接通过psql工作。请使用
$i=array('Beowulf&Grendel')进行测试就在
pg_执行(…)
之前。这应该像预期的那样工作,并证明在这种情况下,与符号没有特别的问题。然后看看当它不起作用时,
$i
中到底有什么。