【发布时间】:2018-03-09 19:36:03
【问题描述】:
设置与数据库的连接的更好做法是什么。使用普通数组还是关联数组?当我使用关联数组时出现此错误警告:mysqli::__construct(): (HY000/1044): Access denied for user ''@'localhost' to database 'cms' in C:\xampp\htdocs\cms\在第 21 行包括\db.php,但它说我已连接。 我们已连接!
<?php
//stores the database host,user,pass,name into array
/*$db['db_host'] = "localhost";
$db['db_user'] = "root";
$db['db_pass'] = "";
$db['db_name'] = "cms";*/
/*$db = array("db_host"=>"localhost",
"db_user"=>"user",
"db_pass"=>"",
"db_name"=>"cms");*/
//we loop through each of the array
foreach ($db as $key => $value){
define(strtoupper($key), $value);
}
$connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if(isset($connection)){
echo "We are connected!";
}else{
echo "Connection failure!";
}
【问题讨论】:
-
DB_HOST, DB_USER, DB_PASS, DB_NAME这是什么?你应该像这样在 mysqli 函数中传递变量。new mysqli($database, $username, $pass, $DBName); -
@BilalAhmed 那不是真的。您可以使用
define("DB_HOST", "localhost");定义常量,然后您可以像他在代码中那样使用它。但是由于他没有定义任何东西,所以他肯定应该传入变量(数组值)。 -
@Twinfriends 我指出了错误并仅给出了一个解决方案作为建议。是的,我知道有很多方法可以在 mysqli 函数中传递参数
-
@BilalAhmed 是的,我知道。只是想提一下,如果他使用 define,它可以像这样工作。
-
@BilalAhmed 我一开始就定义了它,我只是将其注释掉,因为我想知道 w/c 更好,而且我也尝试使用关联数组,只是因为我对使用感到好奇它。