从PostgreSQL填充下拉列表

时间:2015-12-23 16:05:50

标签: php html postgresql

我一直在尝试获取从postgresql表中的列填充的html表单的下拉列表。因为我对此很陌生,所以我无法让它发挥作用。我有一些代码,我一直在努力学习并开始工作。我想让电路列中的值显示在下拉列表中。下拉框显示,但单击以展开并显示值不显示任何内容。下面是表格结构,后面是我一直在摆弄的代码。此外,我没有从数据库连接收到任何错误。任何帮助将不胜感激。

表示例:

Table Example

代码:

<div class="form-group">
             <select name="circuit-id-dropdown">
               <?php
                $db = pg_connect("host=[Deleted] port=5432 dbname=PECO user=postgres password=[Deleted]")
                //or die('Could not connect: ' . pg_last_error());
                $sql = pg_query(sprintf("SELECT Circuit FROM CIRCUIT_INFO"));
                var_dump($sql);
                die;
                while ($column = pg_fetch_assoc($sql)) {echo '<option value="'.htmlspecialchars($column['Circuit']).'"></option>';}
                pg_close($db);
               ?>
              </select>
           </div>  

1 个答案:

答案 0 :(得分:1)

你的pg_query()命令看起来不正确。试试这个:

$db = pg_connect("host=[Deleted] port=5432 dbname=PECO user=postgres password=[Deleted]") or die('Could not connect: ' . pg_last_error());
$sql = pg_query($db, "SELECT Circuit FROM CIRCUIT_INFO"));
while ($column = pg_fetch_assoc($sql)) {
    $circuit = htmlspecialchars($column['Circuit']);
    printf('<option value="%1$s">%1$s</option>', $circuit);
}
pg_close($db);

pg_query的第一个参数需要是连接对象($ db)。此外,sprintf()并不是必需的,因为您的SQL只是一个简单的字符串。即使您在SQL中包含可变数据,通过sprintf()执行也不是这样做的方法 - 准备好的语句会更合适。