我正在努力让postgresql正常工作。我以前使用过sql,但从未使用过postgres。
我觉得下面应该显示一个不错的输出表。
我已经在几个地方测试了php,结果变量似乎没有得到任何返回,因此是一个false值的布尔值,因此没有检索到任何内容。如果有人能帮我找出错误,我将不胜感激。
if($queryType != NULL)
echo'<table>;
if($limit == NULL && $offset == NULL)
{
$query = 'SELECT * FROM $1';
$stmt = pg_prepare($connection, "limitoffset", $query);
$result = pg_execute($connection, "limitoffset", array($queryType));
if($queryType == 'city'){
while($row = pg_fetch_assoc($result)){
echo '<tr>';
echo '<td>' . $row['id] . '</td>';
echo '</tr>';
}
echo '</table>';
同样,它编译并运行,但$row似乎在查询后返回为false,因此循环不会运行以打印出结果,因为它没有结果。
谢谢!
您不能使用占位符作为标识符(即表或列名),因此:
select * from $1
不会起作用。如果你想让表名成为一个变量,我想你会被字符串插值卡住:
$table = pg_escape_identifier($queryType);
$query = "SELECT * FROM $table";
您希望使用pg_escape_identifier
来避免$queryType
中出现奇怪值的问题,但请记住,pg_escape_identifier
会对标识符进行双引号引用,这可能会给您带来区分大小写的问题。
您的问题中还有两个缺失的单引号:一个在echo'<table>;
中,另一个在. $row['id] .
中,但这些引号可能只是在您的问题文本中,因为您说代码是编译和运行的。