参数的空值 - php

时间:2010-10-10 14:43:32

标签: php

我有这段代码:

foreach($summary as $machine)
{
    $hostname = $machine['node'];

    $result = mysql_query("SELECT OS FROM machines WHERE ind='$hostname'");
   while($row = mysql_fetch_array($result))

    {

        if($row == 'solaris')
        {
            $partition_os = 'export/home';
        }
        else
        {
             $partition_os = '/home';
        }
    }
}
  <partition<?php echo $i; ?>><?php echo $partition_os; ?></partition<?php echo $i; ?>>

查询的输出是:(没有where

mysql> SELECT OS FROM machines;
+---------+
| OS      |
+---------+
| NULL    |
| solaris |
+---------+

我的问题是,在我的xml(这是针对ajax)中,我只看到/home/而不是export/home$hostname应该没问题,因为我之前使用它。

谢谢!

4 个答案:

答案 0 :(得分:2)

mysql_fetch_array()返回一个数组,你在这里将数组与String进行比较。

尝试使用$row[0] == 'solaris'进行比较。

答案 1 :(得分:2)

替换它:

if($row == 'solaris')

使用:

if($row['OS'] == 'solaris')

答案 2 :(得分:1)

尝试在foreach循环中创建echo语句:

foreach($summary as $machine) {

        $hostname = $machine['node'];

        $result = mysql_query("SELECT OS FROM machines WHERE ind='$hostname'");
        while($row = mysql_fetch_array($result)) {

                if($row == 'solaris') {
                        $partition_os = 'export/home';
                } else {
                        $partition_os = '/home';
                }
        }
        echo "<partition$i>".$partition_os."</partition$i>";
}

我看不到$i是什么。

答案 3 :(得分:0)

很难说你是否遗漏了一些<?php标签以简洁或什么,但似乎你的XML不在你的循环中。这意味着您只使用循环中设置的$partition_os的最后一个值打印一次(整个循环完成后)。

根据你对另一个答案的评论(你在print_r处),看起来你的查询返回两行,你正在寻找的'solaris',然后是空的。这是后者(空)设置您的$partition_os值。

(...其他答案都是正确的,您需要比较$row[0]$row['OS']