0

我正在尝试通过 PHP 连接到 MySQL。

$dbc = mysqli_connect([ string $host = ini_get("mysqli.default_host")
                        [, string $username = ini_get("mysqli.default_user")
                         [, string $passwd = ini_get("mysqli.default_pw")
                          [, string $dbname = "site"
                           [, int $port = ini_get("mysqli.default_port")
                            [, string $socket = ini_get("mysqli.default_socket") ]]]]]]) OR die('Could not connect to MySQL: ' . mysqli_connect_error() );

我在代码的第一行显示错误。

4

4 回答 4

3

将变量放入方括号中,而不是声明:

$dbc = mysqli_connect(ini_get("mysqli.default_host"),
                      ini_get("mysqli.default_user"),
                      ini_get("mysqli.default_pw"),
                      "site",
                      ini_get("mysqli.default_port"),
                      ini_get("mysqli.default_socket")) 
       or die('Could not connect to MySQL: ' . mysqli_connect_error() )

此外,使用or die()会生成非常不健壮的代码。获取错误并正确处理。

于 2013-04-12T19:20:21.837 回答
1
$dbc = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
于 2013-04-12T19:21:08.003 回答
1

您似乎误解了如何阅读手册。手册规定如下:

mysqli::__construct() ([ string $host = ini_get("mysqli.default_host") [, string $username = ini_get("mysqli.default_user") [, string $passwd = ini_get("mysqli.default_pw") [, string $dbname = "" [, int $port = ini_get("mysqli.default_port") [, string $socket = ini_get("mysqli.default_socket") ]]]]]] )

这几乎就是您在代码中添加的内容。该手册描述了函数期望给出的内容,而不是您应该复制到代码中的内容。您需要输入的内容很简单:

$dbc = mysqli_connect("yourHostName", "yourUserName", "yourPassword", "yourDatabase") OR die ('Could not connect to MySQL: ' . mysqli_connect_error() );

让我们快速回顾一下如何阅读手册。之后__construct(),有一对括号,其中包含您希望给它运行所需的全部内容(参数)。Astring代表主机,astring代表用户名,以此类推。

括在方括号中的参数是可选的- 它们不必提供,__construct()而是使用默认值。例如,我们可以string $host = ini_get("mysqli.default_host")在参数列表中看到。如果我们在mysqli_connect没有证明主机$dbc = mysqli_connect()ini_get("mysqli.default_host")

请注意,如果您选择省略一个可选参数,则必须省略所有跟随它的参数 - 例如,您不能尝试给它主机和密码,但省略用户名。然而,我们可以(就像我在上面所做的那样)提供主机、用户名、密码和数据库(必须按此顺序提供!),然后省略端口和套接字。

于 2013-04-12T19:42:09.917 回答
0

好吧,至少他们没有教你 mysql_ 扩展.. 这是第一次。不要让你陷入太多循环,你可能无法在课堂上做到这一点,但我会像这样使用 PDO:

<?php #db_connect.inc.php

try {
    $dbh = new PDO('mysql:host=localhost;dbname=dbname', 'user', 'pass');
} catch (PDOException $e) {
    echo $e->getMessage(); //or return $e->getMessage();
}

?>
于 2013-04-12T19:59:06.777 回答