2017-01-10 67 views
0

我想写PostgreSQL数据库的SELECT查询,但不是我得到一些错误 - pg_query():查询失败:错误:在“$”或附近的语法错误线1选择查询posgres数据库使用php

$findResult = pg_query('SELECT * FROM fingerprintdata WHERE buildingname = $building '); 
$numrows = pg_num_rows($findResult); 
+0

_Don't_连接你的查询在一起,而不是使用准备好的语句。 –

+0

你的表名是小写的,正如你在这里建议的 - fingerprintdata? – craig

回答

0

查询应该是这样的:

pg_query('SELECT * FROM fingerprintdata WHERE buildingname = "$building" '); 

的变量应该是内部引号 “”

+0

谢谢Jordy,但它不工作,我已经尝试 –

0
$findResult = pg_query($conn, 'SELECT * FROM fingerprintdata WHERE buildingname = "$building"'); 
$numrows = pg_num_rows($findResult); 
+0

谢谢Silentfox,我试图你编辑的查询,但得到这个错误 - pg_query()期望参数1是资源,对象给出 –

0

请尝试下面的解决方案。你没有在单引号中加上等号,这就是为什么你会得到变量的错误。

$findResult = pg_query('SELECT * FROM fingerprintdata WHERE buildingname =' . $building); 
$numrows = pg_num_rows($findResult); 
+0

谢谢克雷格,它不工作我已经尝试 –

+0

谢谢克雷格,它正在工作。 –

+0

你可以建议我,如果我想添加多个where子句那么将会是什么声明?例如。 $ findResult = pg_query(“SELECT * FROM fingerprintdata WHERE buildingname ='”.trim($ building)。'',floorlevel ='“.trim($ floor)。”';“); –

0
$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 ...";