Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试使用mysqli连接到数据库时出现Codeigniter错误_Php_Codeigniter_Mysqli - Fatal编程技术网

Php 尝试使用mysqli连接到数据库时出现Codeigniter错误

Php 尝试使用mysqli连接到数据库时出现Codeigniter错误,php,codeigniter,mysqli,Php,Codeigniter,Mysqli,我在服务器上的CodeIgniter应用程序中遇到以下错误 以下是错误的输出: 遇到一个PHP错误 严重性:警告 消息:mysqli::real_connect():(HY000/1044):拒绝用户访问 “xxx”@“localhost”到数据库“xxx” 文件名:mysqli/mysqli_driver.php 行号:161 回溯: 文件:/home/arya123/public_html/application/controllers/home.php行: 7功能:构造 文件:/home/

我在服务器上的CodeIgniter应用程序中遇到以下错误

以下是错误的输出:

遇到一个PHP错误

严重性:警告

消息:mysqli::real_connect():(HY000/1044):拒绝用户访问 “xxx”@“localhost”到数据库“xxx”

文件名:mysqli/mysqli_driver.php

行号:161

回溯:

文件:/home/arya123/public_html/application/controllers/home.php行: 7功能:构造

文件:/home/arya123/public_html/index.php行:292函数: 需要一次


当我将codeigniter项目从localhost上传到Live server时,遇到了相同的错误

我找到的解决方案是对application=>config=>database.php进行一些更改

以下是的数据库设置

本地主机

以下是的数据库设置:

实时服务器(仅演示,设置因主机提供商而异)

1) 首先,您必须创建数据库

2) 在仪表板上查找MySql数据库(或任何相关数据库)

3) 创建新数据库并输入数据库名称、用户名和密码

4) 从本地主机导出数据库

5) 在live server上打开phpmyadmin并导入它

6) 使用FTP客户端或仪表板更改application=>config=>database.php的设置

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'mysql.hostingprovider.com',    
    'username' => 'abc.username',
    'password' => 'abc.password',
    'database' => 'abc.databasename',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

您必须在database.php中设置默认为3306的mysql端口号

使用其中一个

'dbport' => '3306',

请执行以下操作:

  • applications/config/database.php
    中,将
    dbport=>'3306',
    添加到默认数组
    $db['default']=array()
  • system/database/DB_driver.php
    中,更改
    public$port=''
    公共$port='3306'
  • 我也有同样的问题。 由于我使用xampp,并且在本地运行我的codeigniter应用程序,最后我通过重新放置以下内容解决了问题: “主机名”=>“本地主机” 通过 “主机名”=>“127.0.0.1:33065” 33065是xampp默认为phpmyadmin分配的端口。 如果您正在xampp默认选项中运行项目,那么更改它就足够了(希望如此)。
    但是,如果您不知道,我想,您可以搜索数据库连接使用的端口,并使用“:”将其添加到主机名中”(如果您不确定使用的是哪个端口,您总是可以在您的D.B.管理工具(phpmyadmin或您正在使用的端口)的选项中看到,哪个端口正在使用).

    尝试使用无特殊字符的普通密码,以下是示例:

    $db['default'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'password',
        'password' => 'Mynewpass@756',
        'database' => 'database_name',
    );
    

    您可以添加新用户并通过,并授予其所有权限,如下所示:

    CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
    FLUSH PRIVILEGES;
    

    然后,你应该用新用户更新config.php文件并通过。

    用端口连接localhost为我解决了这个问题

    $db['default'] = array(
        'dsn' => '',
        'hostname' => 'localhost:3308', //Added port here
        'username' => 'root',
        'password' => '1234',
        'database' => 'my_database',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => (ENVIRONMENT !== 'production'),
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array(),
        'save_queries' => TRUE
    );
    

    您可以编辑服务器的php.ini文件,以定义CodeIgniter默认使用的端口

    C:\wamp64\bin\apache\apache2.4.41\bin\php.ini

    mysqli\u connect()
    的默认端口号


    mysqli.default\u port=3308

    尝试在没有任何密码的情况下将config/database.php'username'=>'xxx'设置为'username'=>'root'

    $db['default'] = array( 
    'dsn' => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    

    在数据库文件中,RU使用哪个扩展名<代码>$config['dbdriver']=“mysqli”似乎您没有接近该数据库的权限。是外部数据库还是
    localhost
    (服务器的)数据库?您是否检查了应用程序/config/database.php设置是否正确?如果您使用共享主机su作为godaddy,我建议您检查您创建的用户,因为我有相同的问题,但如果您使用OSX,则是MySQL中的用户权限问题,这是正确答案,因为您是否发现执行此步骤有任何困难?还是你错过了什么?您是否更改了主机名、用户名、密码和数据库名?请再检查一下!是的,一切如你所说
    CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
    FLUSH PRIVILEGES;
    
    $db['default'] = array(
        'dsn' => '',
        'hostname' => 'localhost:3308', //Added port here
        'username' => 'root',
        'password' => '1234',
        'database' => 'my_database',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => (ENVIRONMENT !== 'production'),
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array(),
        'save_queries' => TRUE
    );
    
    $db['default'] = array( 
    'dsn' => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',