繁体   English   中英

如何从与 codeigniter 中的用户关联的数据库中获取数据

[英]How can I fetch data from the database that is associated with the user in codeigniter

我对 codeigniter 真的很陌生,但我决定在我的项目中使用它。 我已经能够构建仪表板,但我面临的挑战是,当我从数据库中获取数据时,它给了我数据库中的所有数据,而不是特定于登录用户的数据。 对于 PDO,我可以解决这个问题,但我不知道如何在 codeigniter 中做到这一点。 任何人都可以帮助我正确的代码。 我将在此处跳过 PDO 代码,但我将如何在 codeigniter 中执行此操作。 我想获取 mobileNumber = mobileNumber 的用户。 谢谢,因为我在等待一些回应。

$query=$pdo->prepare("SELECT * FROM userdata WHERE (mobileNumber=:mnumber || emailId=:emailid)");
      $query->execute(array(':username'=> $username));
       while($row=$query->fetch(PDO::FETCH_ASSOC)){
        $jan=$row['jan'];
        $feb=$row['feb'];
        $march=$row['march'];
       }```

首先,您应该在application/config/database.php中设置数据库配置,例如,

$db['default'] = array(
    'dsn'   => 'mysql:host=localhost; dbname=myproject; charset=utf8;', //db connection string
    'hostname' => 'HOST',
    'username' => 'DBUSER_UNAME',
    'password' => 'DBUSER_PW',
    'database' => 'DB',
    'dbdriver' => 'pdo'
    /* Other configurations
    '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' => TRUE,
    'failover' => array(),
    'save_queries' => TRUE */
);

您还可以定义更多配置,$db['default'], $db['db_1'], $db['db_2'], ecc.. 有关配置的更多信息,请 点击此处

CodeIgniter is a MVC framework, it divides code into Models (classes that extends CI_Model), Views (php files with html, access data given from a controller) and Controllers(classes that extend CI_Model, get data from model and send to view). 您可以访问模型中的数据库。 在构造函数中,调用$this->load->database(); 它将按照默认配置打开数据库连接。 您可以 select 将配置作为字符串参数传递,例如$this->load->database('db_1'); 您也可以将上面看到的配置数组提供给该方法,但我认为如果您编辑数据库配置文件会更好。

好的,现在我们准备好了!

要运行您的查询,您可以编写(在 Model 类的方法中):

$query = $this->db->query("SELECT * FROM userdata WHERE (mobileNumber=? || emailId=?)", array($mobileNumber, $emailId));
foreach ($query->result() as $row){
        $jan=$row['jan'];
        $feb=$row['feb'];
        $march=$row['march'];
}

框架将按照您指定的顺序将问号替换为数组字段值。 其他方法:

$this->db->select('*');
$this->db->from('userdata');
$this->db->where('mobileNumber', $mobileNumber);
$this->db->or_where('emailId', $emailId);
$query = $this->db->query();
foreach ($query->result() as $row){
    ...
}

还有其他方法可以做到这一点,请参阅文档。

我建议您仔细阅读codeigniter 文档,它不长而且对我来说很容易。 我希望这个回答将是详尽的,让我知道!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM