Какую функцию mysqli я должен использовать? - PullRequest
0 голосов
/ 07 июня 2009

Я сейчас пытаюсь извлечь данные из таблицы и использую это:

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

Тем не менее, это не работает, как эхо $online дать "Массив".

Вот var_dump от $ online

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 ]

8 голосов
/ 07 июня 2009

Попробуйте одну из следующих функций:

  • 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'");
3 голосов
/ 07 июня 2009

Вы хотите:

$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 голосов
/ 07 июня 2009

Функция, которую вы ищете, не mysqli_fetch_field(). Он извлекает информацию о поле , но не данные самого поля .

Попробуйте вместо этого:

$row = mysqli_fetch_assoc(mysqli_query($db, "SELECT `online` FROM `tbl_system` WHERE `property` = 'extranet'"));
echo $row['online'];
1 голос
/ 07 июня 2009

Это немного оффтоп, но я рекомендую вам использовать инфраструктуру более высокого уровня для работы с базой данных, например http://adodb.sourceforge.net/ например

1 голос
/ 07 июня 2009

Если я не ошибаюсь, нет способа получить данные только одного столбца напрямую. Вам нужно будет извлечь всю строку, даже если это всего один столбец, а затем вручную взять значение из полученного массива.

edit: ответ хаоса очень похож на то, что я имел в виду.

...