【问题标题】:What mysqli function should I use?我应该使用什么 mysqli 函数?
【发布时间】:2009-06-07 17:55:31
【问题描述】:

我目前正在尝试从表中提取数据,并且正在使用这个:

 $online = mysqli_fetch_field(mysqli_query($db, 
      "SELECT `online` FROM `tbl_system` WHERE `property` = 'extranet'")); 

但是,它不能作为回显 $online 给出“数组”。

这是来自 $online 的 var_dump

object(stdClass)#3 (11) { 
               ["name"]=> string(6) "online" 
               ["orgname"]=> string(6) "online" 
               ["table"]=> string(10) "tbl_system" 
               ["orgtable"]=> string(10) "tbl_system" 
               ["def"]=> string(0) "" 
               ["max_length"]=> int(1) 
               ["length"]=> int(11) 
               ["charsetnr"]=> int(63) 
               ["flags"]=> int(36865) 
               ["type"]=> int(3) 
               ["decimals"]=> int(0) } 

【问题讨论】:

    标签: php arrays mysqli fetch


    【解决方案1】:

    尝试以下功能之一:

    • mysqli_fetch_array — 以关联、数值数组或两者的形式获取结果行

      $row = mysqli_fetch_array($result);
      echo $row[0]; // or
      echo $row['online'];
      
    • mysqli_fetch_assoc — 获取结果行作为关联数组

      $row = mysqli_fetch_assoc($result);
      echo $row['online'];
      
    • mysqli_fetch_object — 将结果集的当前行作为对象返回

      $row = mysqli_fetch_object($result);
      echo $row->online;
      
    • mysqli_fetch_row — 以枚举数组的形式获取结果行

      $row = mysqli_fetch_row($result);
      echo $row[0];
      

    $result 是:

    $result = mysqli_query($db, "SELECT `online` FROM `tbl_system` WHERE `property` = 'extranet'");
    

    【讨论】:

      【解决方案2】:

      你想要:

      $query = mysqli_query($db, "SELECT online FROM tbl_system WHERE property = 'extranet'");
      $row = mysqli_fetch_array($query);
      $online = $row[0];
      

      mysqli_fetch_field() 用于检索列定义,而不是数据,而且它工作得非常好:返回一个列定义对象。

      mysqli_fetch_array()mysqli_fetch_assoc()mysqli_fetch_object() 用于数据检索。

      【讨论】:

        【解决方案3】:

        您要查找的函数不是mysqli_fetch_field()。它提取关于字段的信息,但不提取字段数据本身

        试试这个:

        $row = mysqli_fetch_assoc(mysqli_query($db, "SELECT `online` FROM `tbl_system` WHERE `property` = 'extranet'"));
        echo $row['online'];
        

        【讨论】:

          【解决方案4】:

          除非我弄错了,否则没有办法直接获取一列的数据。即使只有一列,您也需要获取整行,然后手动从结果数组中获取值。

          编辑:chaos 的回答看起来很像我的意思。

          【讨论】:

            【解决方案5】:

            这有点离题,但我建议您使用更高级别的框架来处理数据库,例如 http://adodb.sourceforge.net/

            【讨论】:

            • 谢谢 :) 看起来很有用,我一定会考虑的!
            猜你喜欢
            • 2014-11-21
            • 2021-10-28
            • 2018-06-02
            • 2019-09-18
            • 2012-02-12
            • 2011-06-01
            • 1970-01-01
            • 2014-09-12
            • 2011-09-28
            相关资源
            最近更新 更多