В чем разница между 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;
}
}
}