我想写PostgreSQL数据库的SELECT查询,但不是我得到一些错误 - pg_query():查询失败:错误:在“$”或附近的语法错误线1选择查询posgres数据库使用php
$findResult = pg_query('SELECT * FROM fingerprintdata WHERE buildingname = $building ');
$numrows = pg_num_rows($findResult);
我想写PostgreSQL数据库的SELECT查询,但不是我得到一些错误 - pg_query():查询失败:错误:在“$”或附近的语法错误线1选择查询posgres数据库使用php
$findResult = pg_query('SELECT * FROM fingerprintdata WHERE buildingname = $building ');
$numrows = pg_num_rows($findResult);
查询应该是这样的:
pg_query('SELECT * FROM fingerprintdata WHERE buildingname = "$building" ');
的变量应该是内部引号 “”
谢谢Jordy,但它不工作,我已经尝试 –
$findResult = pg_query($conn, 'SELECT * FROM fingerprintdata WHERE buildingname = "$building"');
$numrows = pg_num_rows($findResult);
谢谢Silentfox,我试图你编辑的查询,但得到这个错误 - pg_query()期望参数1是资源,对象给出 –
请尝试下面的解决方案。你没有在单引号中加上等号,这就是为什么你会得到变量的错误。
$findResult = pg_query('SELECT * FROM fingerprintdata WHERE buildingname =' . $building);
$numrows = pg_num_rows($findResult);
谢谢克雷格,它不工作我已经尝试 –
谢谢克雷格,它正在工作。 –
你可以建议我,如果我想添加多个where子句那么将会是什么声明?例如。 $ findResult = pg_query(“SELECT * FROM fingerprintdata WHERE buildingname ='”.trim($ building)。'',floorlevel ='“.trim($ floor)。”';“); –
$query = 'SELECT * FROM fingerprintdata WHERE buildingname = '.pg_escape_literal($building); // to be able to var_dump($query) to see, what it actually looks like
$findResult = pg_query($query);
在你的情况,你是使用单引号,不扩大$building
内。如果你使用双引号,它会工作,但你会很容易受到SQL注入(例如$building = "xxx'; DROP DATABASE ...";
)
_Don't_连接你的查询在一起,而不是使用准备好的语句。 –
你的表名是小写的,正如你在这里建议的 - fingerprintdata? – craig