Php 用字符串连接到mysqli?

Php 用字符串连接到mysqli?,php,mysqli,Php,Mysqli,我有一个返回字符串(带有数据库凭据)的函数,这个名为$conn_db的字符串如下所示: host= localhost ;username= root ;password= 123456 ;database= test ; 现在,在用于建立数据库连接的函数中,如果我像这样传递值: mysqli_connect($host, $username, $password, $dbname) 一切都很好,但是。如果仅传递连接字符串: mysqli_connect($conn_db) 将在中返回异常

我有一个返回字符串(带有数据库凭据)的函数,这个名为
$conn_db
的字符串如下所示:

host= localhost ;username= root ;password= 123456 ;database= test ;
现在,在用于建立数据库连接的函数中,如果我像这样传递值:

mysqli_connect($host, $username, $password, $dbname)
一切都很好,但是。如果仅传递连接字符串:

mysqli_connect($conn_db)
将在中返回异常:

if (mysqli_connect_errno())
{ 
     throw new Exception("Can't establish db connection");
}

mysqli\u connect
中不能使用连接字符串而不是4个变量?

不可能
mysqli\u connect()
需要多个参数。当您执行
mysqli\u connect($db\u conn)
时,您正在传递一个参数。mysqli库和底层的mysql驱动程序不会解析该字符串来尝试提取任何其他必要的参数。您也不能在一个参数中嵌入多个值,并且希望这是有意义的

由于您只提供了
$db_conn
,MySQL将尝试使用它作为主机名(参数#1),并尝试对一些毫无意义的“username=foo&password=bar”类型的主机名进行DNS查找,这显然会失败


如果要使用单个字符串/参数,请切换到PDO。它的构造函数允许这样的事情。

不可能
mysqli\u connect()
需要多个参数。当您执行
mysqli\u connect($db\u conn)
时,您正在传递一个参数。mysqli库和底层的mysql驱动程序不会解析该字符串来尝试提取任何其他必要的参数。您也不能在一个参数中嵌入多个值,并且希望这是有意义的

由于您只提供了
$db_conn
,MySQL将尝试使用它作为主机名(参数#1),并尝试对一些毫无意义的“username=foo&password=bar”类型的主机名进行DNS查找,这显然会失败


如果要使用单个字符串/参数,请切换到PDO。它的构造函数允许这样的事情。

host=localhost;用户名=根;密码=123456;数据库=测试您正在使用
$
进行这些操作,对吗?。否则,您将收到未定义的常量通知。仅仅做
mysqli\u connect($conn\u db)
在这里不起作用。不确定你想在这里做什么;避免使用其他参数?@Fred ii-是的,你怎么知道我只想传递一个连接字符串而不是所有参数。示例中的连接字符串how包含建立连接的所有信息。问题是:为什么?答案是:为什么不?呵呵,好的。你可以把它设置成一个数组。当然,我在这里大声思考;-)见马克的答案。现在就问他。
host=localhost;用户名=根;密码=123456;数据库=测试您正在使用
$
进行这些操作,对吗?。否则,您将收到未定义的常量通知。仅仅做
mysqli\u connect($conn\u db)
在这里不起作用。不确定你想在这里做什么;避免使用其他参数?@Fred ii-是的,你怎么知道我只想传递一个连接字符串而不是所有参数。示例中的连接字符串how包含建立连接的所有信息。问题是:为什么?答案是:为什么不?呵呵,好的。你可以把它设置成一个数组。当然,我在这里大声思考;-)见马克的答案。现在问问他。嗯,我为此感到难过。例如,在其他语言中,可以将格式化的连接字符串作为c#传递。但是好的,谢谢你澄清这一点。这与php无关。mysqli接口就是这样设计的。坦率地说,多个参数明确地说明了它们的用途,这要比一些庞大的长字符串要好得多,这些长字符串需要一个完整的解析器来计算。无论如何谢谢:)嗯,我为此感到难过。例如,在其他语言中,可以将格式化的连接字符串作为c#传递。但是好的,谢谢你澄清这一点。这与php无关。mysqli接口就是这样设计的。坦率地说,多个参数明确地说明了它们的用途,这要比一些庞大的长字符串要好得多,这些长字符串需要一个完整的解析器来计算。无论如何,谢谢你:)