【问题标题】:How to access the database from a Codeigniter CLI如何从 Codeigniter CLI 访问数据库
【发布时间】:2019-07-25 15:32:35
【问题描述】:

我有一个 Codeigniter 应用程序在浏览器中运行良好,但我很难让任何东西在命令行上正常运行。以下 sn-p 是我的控制器中的内容:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Followers extends CI_Controller {

  public function process()
  {
    echo ENVIRONMENT.PHP_EOL;

    $this->db->select('n.`id`, n.`name`');
    $this->db->from('`table` n');
    $this->db->where('n.`active` = 1');
    $query = $this->db->get();
    $results = $query->result_array();

  }

}

我运行如下:

php index.php cli followers process

并获得以下信息:

development

A PHP Error was encountered

Severity:    Notice
Message:     Undefined property: Followers::$db
Filename:    /Users/neilthompson/Dropbox/Development/MAMP/htdocs/app/application/controllers/cli/Followers.php
Line Number: 14

Backtrace:
    File: /Users/neilthompson/Dropbox/Development/MAMP/htdocs/app/application/controllers/cli/Followers.php
    Line: 14
    Function: _error_handler

    File: /Users/neilthompson/Dropbox/Development/MAMP/htdocs/app/index.php
    Line: 343
    Function: require_once



An uncaught Exception was encountered

Type:        Error
Message:     Call to a member function select() on null
Filename:    /Users/neilthompson/Dropbox/Development/MAMP/htdocs/app/application/controllers/cli/Followers.php
Line Number: 14

Backtrace:
    File: /Users/neilthompson/Dropbox/Development/MAMP/htdocs/app/index.php
    Line: 343
    Function: require_once

我明白错误在说什么,但不知道如何解决它!

我在自动加载文件中有以下内容:

$autoload['libraries'] = array('database', 'smartie' => 'smarty', 'session');

我必须做什么才能访问数据库?

【问题讨论】:

  • 你为什么在控制器中使用查询?你的模型在哪里,这不是使用框架标准的好方法
  • 您通过php index.php cli followers process 错误地运行了您的方法。通过 CLI 运行时,您应该执行 php index.php controller method "args"。你这样做的方式,codeigniter 寻找一个名为 cli 的控制器,它不存在
  • @JavierLarroulet 控制器位于名为“cli”的子文件夹中,这就是它的原因。
  • @devpro 我搬到了一个模型并做了 $this->load->model('Followers');现在错误是“未定义的属性:Followers::$load”。因此,虽然您是对的,使用模型是正确的方法,但实际上转向模型对根本问题没有影响。

标签: php mysql codeigniter command-line-interface codeigniter-3


【解决方案1】:

问题原来是在命令行上运行它不喜欢使用主机名“localhost”连接到数据库。将此更改为 127.0.0.1 已修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多