选项值中的php未定义变量

时间:2012-10-05 09:06:00

标签: php

我很抱歉提出这个问题,因为我觉得它有一个非常简单的答案,但我真的根本不懂php。我想安装bandwidthd用于网络监控,我想要一个选项,它允许你在网关上运行bandwidthd守护进程,所有信息都被导出到另一台机器上的postgres数据库。同样在那台机器上,有数据库的那台机器我已经设置了一个apache服务器来显示带宽的webapp。网络是一堆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>

并且未在其他任何地方声明限制,并且不会出错。

2 个答案:

答案 0 :(得分: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";

答案 1 :(得分:0)

代码$sensor_name == $r[0]未向$sensor_name分配值,但会将其与$r[0]进行比较。

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

''未在您的代码中的任何位置定义,这就是您收到通知的原因。