0

我很抱歉问这个问题,因为我认为它有一个非常简单的答案,但我真的一点也不了解 php。我想安装 bandwidthd 用于网络监控,我想要一个选项,它可以让你在网关上运行 bandwidthd 守护程序,所有信息都导出到另一台机器上的 postgres 数据库。同样在那台机器上,带有数据库的那个我已经设置了一个apache服务器来显示bandwidthd的webapp。web up 是一堆似乎根本不起作用的 php 文件,所以我只是花时间纠正它们。我已经能够获得一些权利,但现在我被卡住了。我有以下代码:

<td><SELECT name="sensor_name">

<OPTION value="none">--Select A Sensor--
<?php
$dbh = pg_pconnect("host=localhost dbname=BandwidthD user=postgres");
$sql = "SELECT sensor_name from sensors order by sensor_name;";
$result = pg_query($dbh, $sql);
while ($r = pg_fetch_array($result))
    echo "<option value=\"".$r[0]."\" ".($sensor_name==$r[0]?"SELECTED":"").">".$r[0]."\n";
?>

当页面执行时,它说 sensor_name 是未定义的,但据我所知,在我看来,变量应该在该行初始化。如果您有任何建议,请告诉我,但请记住,我不知道任何 php,我只是冒险猜测,因为它是一种编程语言,它应该是合乎逻辑的。

我在想 $sensor_name 会在代码中被初始化,因为我也有这个代码:

 <td><SELECT name="limit">
 <OPTION value="none">--How Many Results--
 <OPTION value=20 <?php=$limit==20?"SELECTED":""?>>20
 <OPTION value=50 <?php=$limit==50?"SELECTED":""?>>50
 <OPTION value=100 <?php=$limit==100?"SELECTED":""?>>100
 <OPTION value=all <?php=$limit=="all"?"SELECTED":""?>>All
 </select>

并且限制没有在其他任何地方声明,也没有给出错误。

4

2 回答 2

2

在我看来 $sensor_name 不存在。您从数据库中获取 $results,这是一个数据库结果的枚举,其中您有一个索引为“sensor_name”。

因此,我认为您应该替换此行(未测试):

echo "<option value=\"".$r[0]."\" ".($sensor_name==$r[0]?"SELECTED":"").">".$r[0]."\n";

有了这个

echo "<option value=\"".$r[0]."\" ".($result['sensor_name']==$r[0]?"SELECTED":"").">".$r[0]."\n";
于 2012-10-05T09:08:40.660 回答
0

该代码$sensor_name == $r[0]不会为 赋值$sensor_name,而是将其与 进行比较是否相等$r[0]

该代码$sensor_name==$r[0]?"SELECTED":""表示​​如果$sensor_name等于$r[0](行中的 sensor_name 字段),则将操作评估为SELECTED,否则评估为''

$sensor_name没有在您的代码中的任何地方定义,这就是您收到通知的原因。

于 2012-10-05T09:12:33.723 回答