PHP使用mysqli_fetch_assoc获取数据库列表

时间:2014-11-13 04:11:10

标签: php mysqli

我知道有很多关于mysqli_fetch_assoc()功能的文档和教程,但我有一个问题似乎无法找到答案。顺便说一句,我是PHP的新手,刚开始学习它3天前。我在这里尝试做的是。

1)连接到服务器
2)选择数据库
3)列出已连接服务器上的可用数据库

# Connecting to mySQL server on localhost

# creating host and credentials to login to server
$user = "root";
$pass = "pass123";
$host = "localhost";
$DB = "artechdb";
# Create a connection
$sqlconnect = mysqli_connect($host, $user, $pass, $DB);

echo "Connecting to {$host}....";


# Check if connection successful
if (!$sqlconnect) {
    die ("Could not connect to $host");
} else {
    print "<br>Connected Successfully to $host<br><br>"; 
}


print "Lets see what kind of databases we have on our mySQL server.<br>";
$queryString = "SHOW databases";

$result = mysqli_query($sqlconnect, $queryString);
if($result = mysqli_query($sqlconnect, $queryString) ) {
    # fetch associative array
    while($row = mysqli_fetch_assoc($result) ) {
        printf ("%s", $row["Database"] . "<br>");
        }
}

我的问题是在最后printf语句包含$ row [&#34;数据库&#34;]其中是 word&#34;数据库&#34;来自(哪里?我没有名为&#34;数据库&#34;的数据库。

我认为因为它是一个关联数组,所以我可以使用$ row [0] .. $ row [1] ..等访问和/或打印出我的数据库名称。我正在敲打几个小时试图找出数据库键盘的来源以及为什么我们使用它而不是使用基于零的索引来访问我们的数组。任何帮助都非常感激。

1 个答案:

答案 0 :(得分:1)

当您使用mysqli_fetch_assoc()时,您将获得一个关联数组,该数组将包含找到的行,并且键将是列名。数字索引不会包含

如果您想知道Database来自哪里,那就是结果集的列名。

当你直接查询它时(例如,PHPMyadmin或终端),应该看起来像这样:

+--------------------+
| Database           |   <----- $row['Database']
+--------------------+
| information_schema |
| phpmyadmin         |
| test               |
+--------------------+

所以你想要访问数字索引吗?

如果您还想要访问数字索引$row[0],则需要使用mysqli_fetch_array()

那样:

// you can now acces both
// $row[0] / $row['Database']

之后,到代码:

删除多余的mysqli_query()

$result = mysqli_query($sqlconnect, $queryString);
if($result = mysqli_query($sqlconnect, $queryString) ) { // no need for this

最后:

$result = mysqli_query($sqlconnect, $queryString);
while($row = mysqli_fetch_array($result)) { // fetch_array()
    printf ("%s", $row["Database"] . "<br>");
    echo $row[0];
    // now you can access both
    // $row[0] / or / $row['Database']
}