仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 763|回复: 18
打印 上一主题 下一主题

[学习教程] PHP网站制作之zend framework 数据库操作(DB操作)总...

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:30:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因为函数实在是太多了,慢慢的你就会知道,知道有这个函数就可以。     
  (1)数据查询总结
  fetchRow()这个办法前往一行,详细前往是相干数组仍是甚么用setFetchMode()决意
fetchCol()前往第一列
fetchOne()前往第一行,第一列。为一个值不是数组
fetchAssoc()前往相干数组,相当于fetchAll()默许情形下的前往值
直接停止查询. ( 利用完全的sql语句)
//function quoteInto($text, $value, $type = null, $count = null)
$db = $this->getAdapter();
$sql = $db->quoteInto(‘SELECT * FROM `m_video` WHERE `is_guo` =?’, ’1′);
$result = $db->query($sql);
// 利用PDOStatement对象$result将一切了局数据放到一个数组中
$videoArray = $result->fetchAll();
fetchAll用法
fetchAll($where = null, $order = null, $count = null, $offset = null)
取回了局集中一切字段的值,作为一连数组前往,假如参数不设置就写成null
可以取回了局集的指定条数
$videoArray=$this->fetchAll(“is_jian=1 and is_guo=1″,”id DESC”,0,2)->toArray();
  fetchAssoc用法
fetchAssoc($sql, $bind = array())
取回了局集中一切字段的值,作为联系关系数组前往, 第一个字段作为码
$db = $this->getAdapter();
$videoArray=$db->fetchAssoc(“SELECT * FROM m_video WHERE `is_jian` = :title”,array(‘title’ => ’1′));
  fetchCol用法
fetchCol($sql, $bind = array())
取回一切了局行的第一个字段名
$db = $this->getAdapter();
$videoArray=$db->fetchCol(“SELECT name FROM m_video WHERE `is_jian` = :title”,array(‘title’ => ’1′));
  fetchOne用法
fetchOne($sql, $bind = array())
只取回第一个字段值
$db = $this->getAdapter();
echo $videoArray=$db->fetchOne(“SELECT count(*) FROM m_video WHERE `is_jian` = :title”,array(‘title’ => ’1′));
  fetchPairs用法
fetchPairs($sql, $bind = array())
取回一个相干数组,第一个字段值为码(id),第二个字段为值(name)
前往:Array( [1] => 十二生肖奇缘    [2] => 桃花运),1,2:为id字段。
$db = $this->getAdapter();
$videoArray=$db->fetchPairs(“SELECT id, name FROM m_video WHERE is_jian = :title”,array(‘title’ => ’1′));
  fetchRow用法
fetchRow($where = null, $order = null)
只取回了局集的第一行
$videoArray=$this->fetchRow(“is_jian=1 and is_guo=1″, ‘id DESC’)->toArray();
query用法
//function query($sql, $bind = array())
$db = $this->getAdapter();
$result = $db->query(‘SELECT * FROM `m_video`’);
//$result = $db->query(‘SELECT * FROM `m_video` WHERE `name` = ? AND id = ?’,array(‘十二生肖奇缘’, ’1′));
//$result->setFetchMode(Zend_Db::FETCH_OBJ);//FETCH_OBJ为默许值,FETCH_NUM,FETCH_BOTH
//while ($row = $result->fetch()) {
//    echo $row['name'];
//}
//$rows = $result->fetch();
//$rows = $result->fetchAll();
//$obj = $result->fetchObject();//echo $obj->name;
// echo $Column = $result->fetchColumn(0);//失掉了局集的第一个字段,好比0为id号,用于只取一个字段的情形
print_r($rows);
select用法
$db = $this->getAdapter();
$select = $db->select();
$select->from(‘m_video’, array(‘id’,'name’,'clicks’))
->where(‘is_guo = :is_guo and name = :name’)
->order(‘name’)// 按甚么排序列,列入为数组(多个字段)或字符串(一个字段)
->group()//分组
->having()//分组查询数据的前提
->distinct()// 无参数,去失落反复的值。有时分与groupby前往的了局一样
->limit(10);
// 读取了局利用绑定的参数
$params = array(‘is_guo’ => ’1′,’name’=>’十二生肖奇缘’);
//$sql = $select->__toString();//失掉查询语句,可供调试
$result = $db->fetchAll($select,$params);
履行select的查询
$stmt = $db->query($select);
  $result = $stmt->fetchAll();
或用
$stmt = $select->query();
$result = $stmt->fetchAll();
假如直接用
$db->fetchAll($select)了局一样
多表结合查询用法
$db = $this->getAdapter();
$select = $db->select();
$select->from(‘m_video’, array(‘id’,'name’,'pic’,'actor’,'type_id’,'up_time’))
->where(‘is_guo = :is_guo and is_jian = :is_jian’)
->order(‘up_time’)
->limit(2);
$params = array(‘is_guo’ => ’1′,’is_jian’=>’1′);
$select->join(‘m_type’, ‘m_video.type_id = m_type.t_id’, ‘type_name’);//多表结合查询
$videoArray = $db->fetchAll($select,$params);
find()办法,可使用主键值在表中检索数据.
// SELECT * FROM round_table WHERE id = “1″
$row = $table->find(1);
// SELECT * FROM round_table WHERE id IN(“1″, “2″, 3″)
$rowset = $table->find(array(1, 2, 3));
  (2)数据删除总结
第一种办法:可以删恣意表
//quoteInto($text, $value, $type = null, $count = null)
$table = ‘m_video’;// 设定需求删除数据的表
$db = $this->getAdapter();
$where = $db->quoteInto(‘name = ?’, ‘ccc’);// 删除数据的where前提语句
echo $rows_affected = $db->delete($table, $where);// 删除数据并失掉影响的行数
第二种办法:只能删除本表中的
//delete用法
// delete($where)
$where = “name = ‘bbb’”;
echo $this->delete($where);// 删除数据并失掉影响的行数
(3)数据更新总结
第一种办法:可以更新恣意表
// 以”列名”=>”数据”的格局机关更新数组,更新数据行
$table = ‘m_video’;// 更新的数据表
$db = $this->getAdapter();
$set = array (
‘name’ => ‘蝶影重重’,
‘clicks’ => ’888′,
);
$where = $db->quoteInto(‘id = ?’, ’10′);// where语句
// 更新表数据,前往更新的行数
echo $rows_affected = $db->update($table, $set, $where);
  第二种办法:只能更新本表中的
$set = array (
‘name’ => ‘蝶影重重22′,
‘clicks’ => ’8880′,
);
$db = $this->getAdapter();
$where = $db->quoteInto(‘id = ?’, ’10′);// where语句
$rows_affected = $this->update($set, $where);// 更新表数据,前往更新的行数
(4)数据拔出总结
第一种办法:可以在恣意表中拔出数据
$table = ‘m_gao’;// 拔出数据的数据表
$db = $this->getAdapter();
// 以”列名”=>”数据”的格局格局机关拔出数组,拔出数据行
$row = array (
‘title’     => ‘人人好。111′,
‘content’ => ‘影视网要改成用zend framework开辟啊’,
‘time’ => ’2009-05-04 17:23:36′,
);
// 拔出数据行并前往拔出的行数
$rows_affected = $db->insert($table, $row);
// 最初拔出的数据id
echo $last_insert_id = $db->lastInsertId();
$row=array(
‘name’=>’curdate()’,
‘address’ => new Zend_Db_Expr (‘curdate()’)
)
如许子字段name会拔出一个curdate()的字符串,而address拔出一个工夫值(curdate()的了局2009-05-09)
第二种办法:只能合适本表中的还没有总结出来
(5)事务处置
$table = ‘m_gao’;// 拔出数据的数据表
$db = $this->getAdapter();
$db->beginTransaction();//Zend_Db_Adapter会回到主动commit形式下,直到你再次挪用 beginTransaction()办法
// 以”列名”=>”数据”的格局格局机关拔出数组,拔出数据行
$row = array (
‘id’=>null,
‘title’     => ‘人人好。111′,
‘content’ => ‘影视网要改成用zend framework开辟啊’,
‘time’ => ’2009-05-04 17:23:36′,
);
try {
// 拔出数据行并前往拔出的行数
$rows_affected = $db->insert($table, $row);
// 最初拔出的数据id
$last_insert_id = $db->lastInsertId();
$db->commit();// 事务提交
}catch (Exception $e){
$db->rollBack();
echo ‘捕捉异常:’.$e->getMessage();//打出异常信息
}
echo $last_insert_id;
(5)其他
$db = $this->getAdapter();
$tables = $db->listTables(); //列出以后数据库中的一切表
$fields = $db->describeTable(‘m_video’);//列出一个表的字段情形
没有人会喜欢和见异思迁的人交朋友,因为这种人太不安分,太不可靠,因此,你必须要强迫自己完成自己的目标,哪怕可能会很难受,也得坚持,毅力就是这么锻炼出来的。
蒙在股里 该用户已被删除
沙发
发表于 2015-2-9 07:39:04 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
若天明 该用户已被删除
板凳
发表于 2015-2-25 08:52:20 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
小魔女 该用户已被删除
地板
发表于 2015-2-25 20:50:30 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
飘灵儿 该用户已被删除
5#
 楼主| 发表于 2015-3-4 09:35:27 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
若相依 该用户已被删除
6#
发表于 2015-3-7 20:08:19 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
爱飞 该用户已被删除
7#
发表于 2015-3-9 00:30:56 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
只想知道 该用户已被删除
8#
发表于 2015-3-15 07:41:11 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
谁可相欹 该用户已被删除
9#
发表于 2015-3-19 04:34:21 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
10#
发表于 2015-3-20 09:26:43 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
深爱那片海 该用户已被删除
11#
发表于 2015-3-21 14:16:21 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
第二个灵魂 该用户已被删除
12#
发表于 2015-3-27 18:20:57 | 只看该作者
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
灵魂腐蚀 该用户已被删除
13#
发表于 2015-3-28 09:46:16 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
海妖 该用户已被删除
14#
发表于 2015-4-19 10:16:24 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
柔情似水 该用户已被删除
15#
发表于 2015-4-21 06:23:02 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
乐观 该用户已被删除
16#
发表于 2015-4-21 21:11:56 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
再现理想 该用户已被删除
17#
发表于 2015-6-9 22:14:28 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
透明 该用户已被删除
18#
发表于 2015-6-11 04:15:19 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
再见西城 该用户已被删除
19#
发表于 2015-6-20 20:52:36 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 17:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表