1. CI框架如何在控制器里面链接数据库.然后执行SQL语句
在conf的自动加载,开启database自动加载,配置好数据库账号密码等,然后在控制器中如下:
$userInfo = $this->db->get('user'); //user为user表名
或者
$query = "select * from user";
$this->db->query($query);
2. CI框架里面怎么导出数据库的数据到Excel文件
首先我们使用SQLyogEnt工具,连接到mysql数据库。
连接成功后在左侧的目录位置,找到需要的表,右键打开表
也可以直接在sql执行器中输入:
select
*
from
datetable
name
打开这个表在sql执行器的下方,结果下方,最左侧的位置,如下图,有一个小图标,鼠标移动上面会浮出文字“导出为....”点击这个图标点击后会弹出一个名为“导出为”的弹出窗口,选择需要导出的文件格式:如csv、html、xnl等,在右侧选择导出的字段在界面的最下方有一个输入框,框中是程序默认的一个导出的路径,也可以点击路径旁的按钮,进行自定义导出文件路径。
3. PHP ci框架里面的database 如何连接多个数据库ip,跨服连接
MYSQL不支持多IP(不同机器)关联查询
你可以看下这个:
http://bbs.csdn.net/topics/320196555
4. ci 框架怎么用模型获取数据显示到视图上
创建你的数据模型
数据库的运算并不是在控制类中进行的,而是在数据模型中,这样他们就可以在后面很容易地被反复使用。数据模型就是对你的数据库或其他数据存储方式进行取回、插入和更新的地方,它们的功能是展示你的数据(They
representyourdata)。
打开application/models文件夹新建一个文件news_model.php
,代码如下。确保你已经按照这里的说明配置了自己的数据库并且数据库服务器与PHP.ini有相应配置。
<?php
classNews_modelextendsCI_Model{
publicfunction__construct()
{
$this->load->database();
}
}
这段代码和早前写过的控制器的代码类似。它创建了一个继承CI_Model的数据模型,并用来载入数据库。通过
$this->db对象就可以使用数据库类了。
在对数据库进行查询前,我们要先建一个数据表。连接你的数据库并执行下面的SQL命令,并在里面加些内容。
CREATETABLEnews(
idint(11)NOTNULLAUTO_INCREMENT,
titlevarchar(128)NOTNULL,
slugvarchar(128)NOTNULL,
texttextNOTNULL,
PRIMARYKEY(id),
KEYslug(slug)
);
现在数据库和数据模型都设置好了,我们需要一个方法来把我们的文章从数据库中读取出来。数据库抽象层已经包含在CodeIgniter的ActiveRecord模式中了。这样可以确保只写一次查询就可以应用到
所有的数据库系统上。在你的数据库模型中添加如下代码。
publicfunctionget_news($slug=FALSE){
if($slug===FALSE)
{
$query=$this->db->get('news');
return$query->result_array();
}
$query=$this->db->get_where('news',array('slug'=>$slug));
return$query->row_array();
}
通过上面的代码可以实现两个不同的查询,你可以得到所有的新闻纪录,也可以通过slug得到某一篇新闻。你可能注意到了
$slug变量在查询前并没有被检验过(sanitized),因为ActiveRecord类已经把这个工作做完啦。
显示新闻
既然查询已经写完了,我们就要把这个数据模型和用来显示新闻内容的视图联系起来了。其实这个工作在我们之前写的pages控制类中就可以实现,但为了更清楚地向大家说明,我们来定义一个新的news控制类
application/controllers/news.php,代码如下。
<?php
classNewsextendsCI_Controller{
publicfunction__construct()
{
parent::__construct();
$this->load->model('news_model');
}
publicfunctionindex()
{
$data['news']=$this->news_model->get_news();
}
publicfunctionview($slug)
{
$data['news_item']=$this->news_model->get_news($slug);
}
}
看看上面的代码就会发现和我们之前写过的文件相似。首先,__construct方法是父级类(CI_Controller)
的构造函数,并调用了数据模型,这样这个控制器中的其他方法就能使用那个数据模型了。
其次,这里有两个方法分别用来显示所有的新闻和某一条。在第二个方法中可以看到$slug
变量被传递给了数据模型中的方法。数据模型就是用这个slug来确定需要返回哪一篇文章的。
现在通过数据模型,数据已经被控制器获得了,但还无法显示出来。下面我们就要把数据传递给视图了。
publicfunctionindex(){
$data['news']=$this->news_model->get_news();
$data['title']='Newsarchive';
$this->load->view('templates/header',$data);
$this->load->view('news/index',$data);
$this->load->view('templates/footer');
}
上面的代码从数据模型中获得了所有新闻的记录,并把它们赋值给了一个变量。页面的标题也赋给了$data['title']
,这些所有的数据都会传递给视图。现在你需要创建一个视图来显示这些新闻。新建
application/views/news/index.php代码如下。
<?phpforeach($newsas$news_item):?>
<h2><?phpecho$news_item['title']?></h2>
<divclass="main">
<?phpecho$news_item['text']?>
</div>
<p><ahref="http://[你的域名]/index.php/news/<?phpecho$news_item['slug']?>">Viewarticle</a></p>
<?phpendforeach?>
在这里,每条新闻都被循环出来展示给读者了。你可以看到我们的模板是用PHP和HTML混着写的,如果你更喜欢用模板语言的话,你可以用CodeIgniter的
模板解析器类或者第三方模板解析器(模板引擎)。
新闻概述页面已经做好了,现在还缺少每一篇文章的页面。之前写好的数据模型现在就可以非常简单地用来实现这个功能啦。你只需要添加一些代码到控制器并且创建一个视图。把下面的代码添加到news控制器中。
publicfunctionview($slug){
$data['news_item']=$this->news_model->get_news($slug);
if(empty($data['news_item']))
{
show_404();
}
$data['title']=$data['news_item']['title'];
$this->load->view('templates/header',$data);
$this->load->view('news/view',$data);
$this->load->view('templates/footer');
}
这里,$slug变量作为参数传递给了get_news()
方法,这样就可以返回特定的某一篇文章了。现在剩下的一件事就是创建视图
application/views/news/view.php了,代码如下。
<?php
echo'<h2>'.$news_item['title'].'</h2>';
echo$news_item['text'];
设置路由
因为之前设置了通配符路由规则,现在你需要额外的路由来显示刚刚写的控制器。按照下面的代码修改你的路由文件
(application/config/routes.php)
,这样就确保了请求调用的是news控制器而不是之前设置的pages控制器。第一行代码表示的是控制器中通过slug读取的那条新闻。
$route['news/(:any)']='news/view/$1';
$route['news']='news';
$route['(:any)']='pages/view/$1';
$route['default_controller']='pages/view';
把浏览器的地址改回根目录,在后面加上index.php/news来看看你的新闻页面吧。
5. ci框架怎么读写操作mysql数据库
首先呢,
1:在database里面配置数据库连接,
2:加载 $this->db->database();
3 : 操作数据库,$this->db->select('*')->get('tablename');
纯手打, 不会加技术交流群:522301635
6. 请教,如何使CI支持分布式数据库
可有楼上没明白我的意思,我知道ci可以连接不同的数据库,但没有办法降低数据库负载。真正的大型网站,读写数据库应该是分开的,而读库可能有几天甚至几十台。结果应该类似192.168.1.1|web_bar|192.168.1.2|web_bar192.168.1.3|web_bar等等192.168.2.1|web_cms192.168.2.2|web_cms192.168.2.3|web_cms然后,所有的insert、update、delete等操作,直接对main进行操作,而所有select语句,都会在query数据库中执行,而我需要关心的,应该到底是bar,还是cms,框架应该自己完成对哪个库的操作。读库常用的方法就是每次请求都随机取一个query库,这样假设每秒有1000个数据库请求,有10天query库,每台每秒处理的请求就是100个,可以大大降底数据库压力。目前CI虽然可以指库数据库,但这种对模块操作可能更适合,无法降低负载。所以希望有人能给出解决办法。这也是这个框架我目前发现的唯一不足。不过这个应该是比较容易解决的,如果官方能解决了最好,实在不成,我只能抽时间自己解决了,不过又担心以后升级上的麻烦。
7. 在ci框架中怎样将表单插入数据库
$this->input->post();获取表单的数据
然后$this->db->insert(表名,$data);插入数据库