Drupal - db_fetch_array为每一行返回NULL

时间:2010-05-11 14:25:07

标签: php drupal mysql

我正在使用Drupal的db_fetch_array从我的db_query中获取行。但是,返回的每一行都等于NULL。将查询键入PHP myadmin有效,所以我不知道最近会发生什么。 db_num_rows也返回行数。这是代码:

if(count($rebuild_ids))
  {
    $ids=implode(",",$rebuild_ids);
    $type_stmt = "SELECT * from {" . ItemType::$type_table_name . "} where id IN ($ids)";
    $new_items=db_query($type_stmt);
    if(!$new_items || db_num_rows($new_items) == 0)
    {
        return;
    }
    while($row = db_fetch_array($new_items));
    {
      if ($row!=NULL)
      {
          echo "I work!"
          $game_items[] = $row['id'];
          ItemInstance::$nid_to_item_type_code[$row['nid']] = $row['id'];
      }
    }
  }

然而,它永远不会进入第三个if语句(即永远不会回声“我工作!”)任何想法?

3 个答案:

答案 0 :(得分:1)

友情提示:Drupal具有编码标准http://drupal.org/coding-standards - 它有助于保留它们。这样的错误会更加明显......

同样在查询中添加变量是一个巨大的禁忌http://drupal.org/writing-secure-code

答案 1 :(得分:0)

根据定义,

$row不是NULL,否则它甚至不会达到第三个if声明。

无需检查$row是否包含信息,while循环已经处理了这一点,但如果您想要检查,请使用empty($row)或{{{{{ 1}};不要将数组与count($row) > 0进行比较。

虽然......完全没有必要进行检查。

答案 2 :(得分:0)

K弄明白了。这是while循环后的分号!