mysqli_fetch_array和MYSQLI_BOTH之间有什么区别?

时间:2016-01-07 06:37:36

标签: php mysqli

我知道

mysqli_fetch_assoc,
mysqli_fetch_array,
mysqli_fetch

但是,MYSQLI_BOTH等于mysqli_fetch_array还是实际上不同?

8 个答案:

答案 0 :(得分:28)

从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 Manual

答案 1 :(得分:7)

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);
?>

答案 2 :(得分:5)

mysqli_fetch_array()

有第二个参数$resulttype

有三种选择:

MYSQLI_ASSOCMYSQLI_NUMMYSQLI_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

答案 3 :(得分:5)

MYSQLI_BOTH等于mysqli_fetch_array

您需要数字和关联数组,然后才能使用

mysqli_fetch_array($res);

OR

mysqli_fetch_array($res, MYSQLI_BOTH);

答案 4 :(得分:4)

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

答案 5 :(得分:4)

MYSQLI_BOTHmysqli_fetch_array中的一个选项,允许您以关联方式访问数组,例如$result['name']和索引,例如结果$result[0]中的位置编号。

mysqli_fetch_array内,第二个参数允许使用MYSQLI_NUM的选项,MYSQLI_ASSOC,您可以使用关联方式访问MYSQLI_BOTH,最后mysqli_fetch_assoc()这允许您访问任何一种方式的值。

$result['name']基本上允许您使用第一种方法ConcurrentModificationException访问结果。

答案 6 :(得分:4)

mysqli_fetch_array - 将结果行作为关联行,数字数组或两者获取

mysqli_fetch_array

中有两个参数

1.Result

2.Result Type(可选)

  

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.Result Type

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 manual

  

这意味着mysqli_fetch_arrayMYSQLI_BOTH之间没有比较,因为它是mysqli_fetch_array的默认参数。您可以将mysqli_fetch_arraymysqli_fetch_assoc进行比较

答案 7 :(得分:-2)

这是一些示例代码,如果它有帮助,可以很容易理解。我使用$ 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;
        }
    }
}