我应该使用什么mysqli功能?

时间:2009-06-07 17:55:31

标签: php arrays mysqli fetch

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

 $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) } 

5 个答案:

答案 0 :(得分:8)

尝试以下功能之一:

  • 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'");

答案 1 :(得分:3)

你想:

$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()用于数据检索。

答案 2 :(得分:2)

您正在寻找的功能不是mysqli_fetch_field()。它提取有关字段的信息,但不提取字段数据本身

请改为尝试:

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

答案 3 :(得分:1)

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

编辑:混乱的答案看起来非常像我的意思。

答案 4 :(得分:1)

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