我很抱歉提出这个问题,因为我觉得它有一个非常简单的答案,但我真的根本不懂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>
并且未在其他任何地方声明限制,并且不会出错。
答案 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}}。
''
未在您的代码中的任何位置定义,这就是您收到通知的原因。