【问题标题】:php mysqli connect using arraysphp mysqli 使用数组连接
【发布时间】: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 更好,而且我也尝试使用关联数组,只是因为我对使用感到好奇它。

标签: php mysqli


【解决方案1】:

如果您使用错误的方式isset 只是检查变量是否设置。 $connection 已设置(如果它已连接或未连接。如果连接有问题,它将包含错误)因此将您的条件更改为:

if(!($connection->connect_error)){ //not containing error
    echo "We are connected!";
}else{ //has error
    echo "Connection failure!".$connection->connect_error;
}

【讨论】:

  • 感谢您的信息,我已经更改了它,但我仍然收到错误。
  • mysqli::__construct(): (HY000/1044): 拒绝用户 ''@'localhost' 访问 C:\xampp\htdocs\cms\includes\db 中的数据库 'cms'。 php 在第 21 行,但它说我已连接。当我尝试使用关联数组时出现此错误,但另一个工作正常。
  • 您是否取消了阵列的注释?有问题在评论中
  • 是的,我确实尝试取消注释使用关联数组的 $db。仍然收到错误。
  • 你的密码是空的吗?连接数据库
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 2010-12-31
相关资源
最近更新 更多