MySQL的主机名是什么?


What is my host name for MySQL?

这听起来像一个愚蠢的问题,但我开始在PHP和MySQL和失败的第一步,试图连接到数据库:

<html>
<head>
</head>
<body>
    <?php
        $con = mysqli_connect("localhost", "root", "root", "ASOIAF.odb");
        if (mysqli_connect_errno()) {
            echo "Failed to connect to database";
        } else {
            echo "Connected to database";
        }
        mysqli_close($con);
    ?>
</body>
</html>

我不明白第一个host参数。一个雅虎帮助页面说主机应该是"mysql",但是当我使用这个时,它也无法连接。该数据库ASOIAF采用OpenDocument数据库格式(odb),位于LibreOffice Base上。我用Uniserver来运行PHP和MySQL;两者目前都在运行。web应用程序存储在Uniserver的www文件夹中,并通过localhost在Google Chrome上运行。

我应该在connect语句的host部分插入什么?还是我在PHP代码中犯了一个更基本的语法错误,导致无法建立连接?

MySQL的主机名是什么?

我们不知道你运行MySQL的电脑叫什么。

雅虎帮助页面说主机应该是"mysql"

这是Yahoo Web Hosting特有的。听起来不像你在使用他们的服务,所以这是不适用的。

我使用Uniserver来运行PHP和MySQL

这表明运行PHP的web服务器的计算机和运行MySQL服务器的计算机是同一台机器。这使得localhost是合适的。

localhost是专用网络上的计算机的标准名称,仅与之连接。对于MySQL来说,它有一个特殊的含义,它使连接通过套接字而不是TCP/IP(这更有效)进行。

我应该在connect语句的host部分插入什么?

localhost

或者我在PHP代码中犯了一个更基本的语法错误,阻止了连接?

我看不出任何语法错误。我怀疑问题可能出在您的数据库配置上。你告诉MySQL服务器ASOIAF.odb了吗?这是数据库实际上在MySQL中被称为(而不是仅仅是存储LibreOffice连接到该数据库的配置的文件)。

你最大的错误是没有使用mysqli_error来找出PHP报告的问题。

    if (mysqli_connect_errno()) {
        echo "Failed to connect to database";
        echo mysqli_error();

use

mysqli_connect("localhost", "root");

希望能成功