В чем разница между mysqli_fetch_array и MYSQLI_BOTH?

Я знаю, что

mysqli_fetch_assoc,
mysqli_fetch_array,
mysqli_fetch

Однако, MYSQLI_BOTH равно mysqli_fetch_array или они на самом деле разные?

Ответы

Ответ 1

Из руководства PHP:

Используя константу MYSQLI_ASSOC, эта функция будет вести себя идентично mysqli_fetch_assoc(), в то время как MYSQLI_NUM будет вести себя идентично функции mysqli_fetch_row(). Окончательный вариант MYSQLI_BOTH создаст единый массив с атрибутами обоих.

Это необязательные параметры, которые используют, чтобы указать, какой тип array будет возвращен.

Вот основные примеры:

$result->fetch_array(MYSQLI_NUM);

array(
    0 => "val 1",
    1 => "val 2"
);

$result->fetch_array(MYSQLI_ASSOC);

array(
    'key0' => "val 1",
    'key1' => "val 2"
);

$result->fetch_array(MYSQLI_BOTH);

array(
    0 => "val 1",
    'key0' => "val 1",
    1 => "val 2",
    'key1' => "val 2"
);

Руководство по PHP

Ответ 2

mysqli_fetch_array()

Функция

также может хранить данные в ассоциативных индексах, используя имена полей результирующего набора как ключи.

Например

<?php
    mysqli_connect("localhost", "mysql_user", "mysql_password") or
        die("Could not connect: " . mysqli_error());
    mysqli_select_db("mydb");

    $result = mysqli_query("SELECT id, name FROM mytable");

    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
        printf ("ID: %s  Name: %s", $row["id"], $row["name"]);
    }

    mysqli_free_result($result);
?>

MYSQLI_BOTH

Создает единый массив с атрибутами обоих.

Например

<?php
    mysqli_connect("localhost", "mysql_user", "mysql_password") or
        die("Could not connect: " . mysqli_error());
    mysqli_select_db("mydb");

    $result = mysqli_query("SELECT id, name FROM mytable");

    while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
        printf ("ID: %s  Name: %s", $row[0], $row["name"]);
    }

    mysqli_free_result($result);
?>

Ответ 3

mysqli_fetch_array()

имеет второй аргумент $resulttype.

Существует три варианта:

MYSQLI_ASSOC, MYSQLI_NUM или MYSQLI_BOTH.

значения:

MYSQLI_ASSOC: Получить ассоциативный массив

MYSQLI_NUM: выборка числового массива

MYSQLI_BOTH: выбор и ассоциативного, и числового массива.

MYSQLI_BOTH по умолчанию.

если мы не предоставим второй параметр, MYSQLI_BOTH будет рассмотрен.

Итак, утверждения:

$result = mysqli_fetch_array ($ res, MYSQLI_BOTH);

и

$result = mysqli_fetch_array ($ res);

равны.

http://php.net/manual/en/mysqli-result.fetch-array.php

Ответ 4

MYSQLI_BOTH - это опция в mysqli_fetch_array, которая позволяет вам обращаться к массивам ассоциативным способом, например. $result['name'] и по индексу, например. номер позиции в результате $result[0].

Внутри mysqli_fetch_array второй параметр позволяет использовать параметр MYSQLI_NUM, который использует только метод индекса, MYSQLI_ASSOC, к которому вы можете получить доступ, используя способ связи и, наконец, MYSQLI_BOTH, который позволяет вам получить доступ к значениям пути.

mysqli_fetch_assoc() позволяет вам получить доступ к результату, используя первый метод $result['name'].

Ответ 5

MYSQLI_BOTH создаст единый массив с атрибутами MYSQLI_NUM и MYSQLI_ASSOC.

Из документации:

Используя константу MYSQLI_ASSOC, эта функция будет вести себя одинаково с mysqli_fetch_assoc(), а MYSQLI_NUM будет вести себя одинаково с функцией mysqli_fetch_row(). Окончательный вариант MYSQLI_BOTH создаст единый массив с атрибутами обоих.

Источник

http://php.net/manual/en/mysqli-result.fetch-array.php

Ответ 6

mysqli_fetch_array - выберите строку результатов как ассоциативный, числовой массив или оба

в mysqli_fetch_array

есть два параметра:

1.Result

2. Тип результата (необязательно)

1.Result

Идентификатор набора результатов, возвращаемый mysqli_query(), mysqli_store_result() или mysqli_use_result().

Пример

$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
$result = mysqli_query($link, $query);

2. Тип результата

MYSQLI_BOTH - выберите строку результатов как ассоциативный и числовой массив (параметр по умолчанию)

Пример

/* associative and numeric array */
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
printf ("%s (%s)\n", $row[0], $row["CountryCode"]);

MYSQLI_ASSOC - Получить строку результатов как ассоциативный массив

вы можете использовать альтернативный результат возврата mysqli_fetch_assoc ($ result) как ассоциативный массив

Пример

/* associative array */
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);

MYSQLI_NUM - Получить строку результатов в виде числового массива

Пример

/* numeric array */
$row = mysqli_fetch_array($result, MYSQLI_NUM);
printf ("%s (%s)\n", $row[0], $row[1]);

руководство php

Это означает, что нет сравнения между mysqli_fetch_array и MYSQLI_BOTH, потому что это аргумент по умолчанию mysqli_fetch_array. Вы можете сравнить mysqli_fetch_array с mysqli_fetch_assoc

Ответ 7

MYSQLI_BOTH равно mysqli_fetch_array.

Вы хотите как числовой, так и ассоциативный массив, вы можете использовать

mysqli_fetch_array($res);

ИЛИ

mysqli_fetch_array($res, MYSQLI_BOTH);

Ответ 8

Это пример кода, который довольно прост, если он помогает. Я использую $stmt (это именно так, как я научился это делать), и я использовал это бесчисленное количество раз. Я понимаю, что это не совсем то, что вам нужно, но это работает и может помочь или помочь кому-либо, у кого есть аналогичная проблема.

include "../dbConnFile.php";

if($conn){

    if($_POST['example1']!='' && $_POST['example2']!=''){//checks input

        $stmt = $conn->prepare("INSERT INTO database (example1, example2) VALUES (?,?)");

        $stmt->bind_param("ss", $_POST['example1'], $_POST['example2']);

        $stmt->execute();
        $stmt->close();
    }

    $result=$conn->query("SELECT example1, example2 FROM datasbase ORDER BY ____ DESC");

    if($result){
        while($tempRowHolder = mysqli_fetch_array($result,MYSQL_ASSOC)){
            $records[] = $tempRowHolder;
        }
    }
}