利用phpexcel读取excel实现代码
php对excel文件进行循环读取
php对字符进行ascii编码转化,将字符转为十进制数
php对excel日期格式读取,并进行显示转化
php对汉字乱码进行编码转化
代码如下 | 复制代码 |
<?php require_once 'PHPExcel.php'; /**对excel里的日期进行格式转化*/ $filePath = 'test.xlsx'; $PHPExcel = new PHPExcel(); /**默认用excel2007读取excel,若格式不对,则用之前的版本进行读取*/ $PHPExcel = $PHPReader->load($filePath); |
代码如下 | 复制代码 |
<?php $conn = new com("adodb.connection"); $connstr="driver={microsoft access driver (*.mdb)}; dbq=". realpath("data/db_database12_185.mdb"); $conn->open($connstr); ?> |
// -函数清单 索引:
// - Open: 打开数据库连接 Line:71
// - Close: 关闭数据库连接 Line:107
// - SelectDB: 选择数据库 Line:129
// - Query: 创建查询 Line:151
// - DataSeek: 移动记录指针 Line:175
// - FieldName: 获取字段名称 Line:198
// - FieldType: 获取字段类型 Line:220
// - FieldLenght: 获取字段长度 Line:242
// - FetchRow: 获取数据并保存到数组(数字索引) Line:264
// - FetchArray: 获取数据并保存进数组(数字和关联) Line:289
// - FetchObject: 获取数据并保存到对象(对象方式) Line:315
// - Result: 获取结果数据 Line:341
// - FreeResult: 刷新记录集 Line:363
// - RowsNumber: 获取记录数量 Line:385
// - FieldsNumber: 获取字段数量 Line:407
// - CurRecNumber: 获取当前记录号(从0开始) Line:429
// - RecordNumber: 获取当前行号(从1开始) Line:438
// - MoveFirstRec: 移动到第一条记录 Line:447
// - MoveLastRec: 移动到最后一条记录 Line:469
// - MovePreviousRec: 移动到前一条记录 Line:495
// - MoveNextRec: 移动到下一条记录 Line:521
// - MoveToRec: 移动到一个特定的记录(从1开始) Line:548
代码如下 | 复制代码 |
< ?PHP /********************************************************************************** 此类将数据库操作封装,具有良好的可移植性,针对数据库:mysql,mssql,pg *原作者:Andrzej Manczyk 整理:玉面修罗 E-mail/msn:xiuluo-999@163.com 时间:2006-12-20* ************************************************************************************ // -函数清单 索引: // - Open: 打开数据库连接 Line:71 // - Close: 关闭数据库连接 Line:107 // - SelectDB: 选择数据库 Line:129 // - Query: 创建查询 Line:151 // - DataSeek: 移动记录指针 Line:175 // - FieldName: 获取字段名称 Line:198 // - FieldType: 获取字段类型 Line:220 // - FieldLenght: 获取字段长度 Line:242 // - FetchRow: 获取数据并保存到数组(数字索引) Line:264 // - FetchArray: 获取数据并保存进数组(数字和关联) Line:289 // - FetchObject: 获取数据并保存到对象(对象方式) Line:315 // - Result: 获取结果数据 Line:341 // - FreeResult: 刷新记录集 Line:363 // - RowsNumber: 获取记录数量 Line:385 // - FieldsNumber: 获取字段数量 Line:407 // - CurRecNumber: 获取当前记录号(从0开始) Line:429 // - RecordNumber: 获取当前行号(从1开始) Line:438 // - MoveFirstRec: 移动到第一条记录 Line:447 // - MoveLastRec: 移动到最后一条记录 Line:469 // - MovePreviousRec: 移动到前一条记录 Line:495 // - MoveNextRec: 移动到下一条记录 Line:521 // - MoveToRec: 移动到一个特定的记录(从1开始) Line:548 ************************************************************************************ //Inputs: // - dbType: databases type: mssql, mysql, pg // - connectType: connection type: c - common connection, // p - open persistent connection // - connect: for MS SQL Server - server name, // for MySQL - hostname [:port] [:/path/to/socket] , // for PostgreSQL - host, port, tty, options, // dbname (without username and password) // - username // - password // - dbName: database name // - query: SQL query // - result: result set identifier // - RowNumber: // - offset: field identifier // - ResultType: a constant and can take the following values: PGSQL_ASSOC, PGSQL_NUM, and PGSQL_BOTH // - FieldName // //Returns: // - result: result set identifier // - connect link identifier // - record number (starting at 0: CurrRecNumber or starting at 1: RecordNumber) // - number of fields in the specified result set // - number of rows in the specified result set *************************************************************************************/ Class mDatabase { /***********************************成员变量定义***************************************/ var $dbType; // 数据库类型: mssql, mysql, pg var $connectType; // 连接类型: c - common connection, p - open persistent connection var $idCon; // 连接号 var $curRow; // current row number of data from the result // associated with the specified result identifier array var $seek; // current row number of data from DataSeek function array
/***********************************成员方法实现***************************************/ /************************************************************************************ *连接数据库的函数 *************************************************************************************/ Function Open($dbType, $c, $connect, $username = "", $password = "") { $this->dbType = $dbType; Switch ($dbType) { Case "mssql": If ($connectType == "c") { $idCon = mssql_connect($connect, $username, $password); } Else { $idCon = mssql_pconnect($connect, $username, $password); } Break; Case "mysql": If ($connectType == "c") { $idCon = mysql_connect($connect, $username, $password); } Else { $idCon = mysql_pconnect($connect, $username, $password); } Break; Case "pg": If ($connectType == "c") { $idCon = pg_connect($connect . " user=" . $username . " password=" . $password); } Else { $idCon = pg_pconnect($connect . " user=" . $username . " password=" . $password); } Break; Default: $idCon = 0; Break; } $this->idCon = $idCon; Return $idCon; } /************************************************************************************ *关闭数据库连接 *************************************************************************************/ Function Close() { Switch ($this->dbType) { Case "mssql": $r = mssql_close($this->idCon); Break; Case "mysql": $r = mysql_close($this->idCon); Break; Case "pg": $r = pg_close($this->idCon); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *选择数据库 *************************************************************************************/ Function SelectDb($dbName) { Switch ($this->dbType) { Case "mssql": $r = mssql_select_db($dbName); Break; Case "mysql": $r = mysql_select_db($dbName); Break; Case "pg": $r = False; Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *创建查询 *************************************************************************************/ Function Query($query) { Switch ($this->dbType) { Case "mssql": $r = mssql_query($query, $this->idCon); Break; Case "mysql": $r = mysql_query($query, $this->idCon); Break; Case "pg": $r = pg_exec($this->idCon, $query); Break; Default: $r = False; Break; } $this->curRow[$r] = 0; $this->seek[$r] = 0; Return $r; } /************************************************************************************ *移动记录指针 *************************************************************************************/ Function DataSeek($result, $RowNumber) { Switch ($this->dbType) { Case "mssql": $r = mssql_data_seek($result, $RowNumber); Break; Case "mysql": $r = mysql_data_seek($result, $RowNumber); Break; Case "pg": $r = False; Break; Default: $r = False; Break; } $this->seek[$result] = (int) $RowNumber; Return $r; } /************************************************************************************ *获取字段名 *************************************************************************************/ Function FieldName($result, $offset) { Switch ($this->dbType) { Case "mssql": $r = mssql_field_name($result, $offset); Break; Case "mysql": $r = mysql_field_name($result, $offset); Break; Case "pg": $r = pg_fieldname($result, $offset); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取字段类型 *************************************************************************************/ Function FieldType($result, $offset) { Switch ($this->dbType) { Case "mssql": $r = mssql_field_type($result, $offset); Break; Case "mysql": $r = mysql_field_type($result, $offset); Break; Case "pg": $r = pg_fieldtype($result, $offset); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取字段长度 *************************************************************************************/ Function FieldLength($result, $offset) { Switch ($this->dbType) { Case "mssql": $r = mssql_field_length($result, $offset); Break; Case "mysql": $r = mysql_field_len($result, $offset); Break; Case "pg": $r = pg_fieldsize($result, $offset); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取数据并保存到数组,可以用数字索引方式访问数组 *************************************************************************************/ Function FetchRow($result, $RowNumber = 0) { Switch ($this->dbType) { Case "mssql": $r = mssql_fetch_row($result); Break; Case "mysql": $r = mysql_fetch_row($result); Break; Case "pg": $r = pg_fetch_row($result, $RowNumber); If ($r) { $this->curRow[$result] = $RowNumber; $this->seek[$result] = $RowNumber; } Break; Default: $r = False; Break; } Return $r; }
/************************************************************************************ *获取数据并保存到数组,可以用数字索引和关联索引的方式访问 *************************************************************************************/ Function FetchArray($result, $RowNumber = 0, $ResultType = 2) { Switch ($this->dbType) { Case "mssql": $r = mssql_fetch_array($result); Break; Case "mysql": $r = mysql_fetch_array($result); Break; Case "pg": $r = pg_fetch_array($result, $RowNumber, $ResultType); If ($r) { $this->curRow[$result] = $RowNumber; $this->seek[$result] = $RowNumber; } Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取数据并保存到对象 *************************************************************************************/ Function FetchObject($result, $RowNumber = 0, $ResultType = 2) { Switch ($this->dbType) { Case "mssql": $r = mssql_fetch_object($result); Break; Case "mysql": $r = mysql_fetch_object($result); Break; Case "pg": $r = pg_fetch_object($result, $RowNumber, $ResultType); If ($r) { $this->curRow[$result] = $RowNumber; $this->seek[$result] = $RowNumber; } Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取结果数据 *************************************************************************************/ Function Result($result, $RowNumber, $FieldName) { Switch ($this->dbType) { Case "mssql": $r = mssql_result($result, $RowNumber, $FieldName); Break; Case "mysql": $r = mysql_result($result, $RowNumber, $FieldName); Break; Case "pg": $r = pg_result($result, $RowNumber, $FieldName); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *释放结果数据 *************************************************************************************/ Function FreeResult($result) { Switch ($this->dbType) { Case "mssql": $r = mssql_free_result($result); Break; Case "mysql": $r = mysql_free_result($result); Break; Case "pg": $r = pg_freeresult($result); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取记录数量 *************************************************************************************/ Function RowsNumber($result) { Switch ($this->dbType) { Case "mssql": $r = mssql_num_rows($result); Break; Case "mysql": $r = mysql_num_rows($result); Break; Case "pg": $r = pg_numrows($result); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取字段数量 *************************************************************************************/ Function FieldsNumber($result) { Switch ($this->dbType) { Case "mssql": $r = mssql_num_fields($result); Break; Case "mysql": $r = mysql_num_fields($result); Break; Case "pg": $r = pg_numfields($result); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取当前记录号(从0开始) *************************************************************************************/ Function CurRecNumber($result) { $r = $this->curRow[$result]; Return $r; } /************************************************************************************ *获取当前行号(从1开始) *************************************************************************************/ Function RecordNumber($result) { $cr = $this->CurRecNumber($result) + 1; Return $cr; } /************************************************************************************ *移动到第一条记录 *************************************************************************************/ Function MoveFirstRec($result) { Switch ($this->dbType) { Case "pg": $r = $this->FetchRow($result, 0); Break; Default: $rn = $this->DataSeek($result, 0); If ($rn) { $r = $this->FetchRow($result); If ($r) $this->curRow[$result] = $this->seek[$result]; } Else { $r = False; } Break; } Return $r; } /************************************************************************************ *移动到最后一条记录 *************************************************************************************/ Function MoveLastRec($result) { $rs = $this->RowsNumber($result); If ($rs) { $rs--; Switch ($this->dbType) { Case "pg": $r = $this->FetchRow($result, $rs); Break; Default: $rn = $this->DataSeek($result, $rs); If ($rn) { $r = $this->FetchRow($result); If ($r) $this->curRow[$result] = $this->seek[$result]; } Else { $r = False; } Break; } } Return $r; } /************************************************************************************ *移动到前一条记录 *************************************************************************************/ Function MovePreviousRec($result) { $rs = $this->CurRecNumber($result); If ($rs) { $rs--; Switch ($this->dbType) { Case "pg": $r = $this->FetchRow($result, $rs); Break; Default: $rn = $this->DataSeek($result, $rs); If ($rn) { $r = $this->FetchRow($result); If ($r) $this->curRow[$result] = $this->seek[$result]; } Else { $r = False; } Break; } } Return $r; } /************************************************************************************ *移动到下一条记录 *************************************************************************************/ Function MoveNextRec($result) { $rs = $this->CurRecNumber($result); $rn = $this->RowsNumber($result); $rs++; If ($rs != $rn) { Switch ($this->dbType) { Case "pg": $r = $this->FetchRow($result, $rs); Break; Default: $re = $this->FetchRow($result); If ($re) { $r = $re; $this->curRow[$result]++; $this->seek[$result] = $this->curRow[$result]; } Else { $r = False; } Break; } } Return $r; } /************************************************************************************ *移动到指定记录(编号从0开始) *************************************************************************************/ Function MoveToRec($result, $RowNumber) { $rn = $this->RowsNumber($result); If ($RowNumber > 0 And $RowNumber < $rn) { $RowNumber--; Switch ($this->dbType) { Case "pg": $r = $this->FetchRow($result, $RowNumber); Break; Default: $rn = $this->DataSeek($result, $RowNumber); If ($rn) { $r = $this->FetchRow($result); If ($r) $this->curRow[$result] = $this->seek[$result]; } Else { $r = False; } Break; } } Return $r; } } //********************************方法实现完毕****************************************// ?> |
1. 创建一个数据库连接
2. 发送一些不是必须的语句
3. 选择一个存储的数据库
4. 编写数据库插入语句
5. 发送这个语句
先看数据结构
代码如下 | 复制代码 |
-------------------------------------- -- CREATE TABLE IF NOT EXISTS `guest` ( --
-- CREATE TABLE IF NOT EXISTS `post` ( --
|
详细的分析也就这么五个步骤了,那么我们开始第一步吧,利用PHP提供的内置函数mysql_connect来创建一个数据库链接,这个函数需要三个参数,格式如下:
Mysql_connect(‘数据库所在的主机’,’链接数据库的用户名’,’链接数据库的密码’)。这个函数返回一个数据库连接资源号。
看我们在post.php中的链接代码:
代码如下 | 复制代码 |
$con=mysql_connect('localhost','root','root') or die('链接数据库失败!'); |
第一行创建一个数据库连接,把资源号赋给变量$con,如果连接失败,结束程序的执行输出提示信息“链接数据库失败!”。
第二行发送一个字符集设定语句,让数据在数据库中的出入都使用utf8字符集。这个语句是可有可无的,其中的语句可以写成set names gbk或者set names gb2312等等我们需要的字符集。
第三行利用PHP提供的mysql_select_db函数来选择我们要使用的数据库。
值得注意的是,mysql_query这个函数本身有两个参数:第一个参数就是我们要发送的数据库执行语句sql,第二个参数是数据库连接的资源编号,如果第二个参数没有指定的话,那么程序就会查找最近一个链接资源,也就是说这个参数不是必须的。我们以上包括将来的写法都是没有第二个参数的,按照程序的上下文我们第二行的语句可以写作:
mysql_query(“set names utf8”,$con)这样也是正确的。
这个函数的返回值是布尔型的,如果语句成功执行就返回true否则返回false——了解这一点很重要。
好,到此为止我们的数据库连接已经就绪,开始组装我们的sql插入语句,看一下代码(post.php 第67-76行):
代码如下 | 复制代码 |
$insertSql="insert into guest (name,qq,email) values ('$name','$qq','$email')"; |
在这个片段的第一行中我们组建了一个sql的插入语句,这个看来没什么可说的,唯一点就是把变量写进这些语句并且用引号包裹起来——对于数字型的不需要引号。
第二句发送语句,并判断是否被成功执行。
这个地方需要说明:PHP中if判断中的语句是会被执行的,例如if($c=$a+$b)这样的语句被执行的顺序是,先计算里面的语句然后再对结果作出判断。所以执行之后$c的值是$a,$b之和,判断的时候是对$c作出的判读。
所以在这个地方if判断的是mysql_query($insertSql)的返回结果,语句已经发送到了数据库。
第三行出现的函数mysql_insert_id——获取最近一次插入数据的时候自增序列的值,我们这里获取的是guest表中的id,因为只有这个id才是自增的。以备后用。
这个片段的第五行到最后都是进行的错误处理,如果语句没有被成功执行,那么就执行这些程序,倒数第二行的exit();函数的意思是终止程序向下执行。
这时候我们已经把guest信息保存到了Mysql的GuestBook的guest表中了
看一下post.php文件
代码如下 | 复制代码 |
//把以上插入取得的客户id和留言信息插入到post表中 |
nvarchar被截为255解决办法
PHP 将 nvarchar 按照 MySQL 的 varchar 处理了吧!本文给出了解决方法:
代码如下 | 复制代码 |
select cast(目标字段 as text) from 表名 |
假如你的 article 表中有个字段 summary 为 nvarchar,那么命令为:
代码如下 | 复制代码 |
select cast(summary as text) from article |
另一种情况text被截段解决办法
PHP 的配置文件 php.ini 中 MSSQL 部分:
[MSSQL]
代码如下 | 复制代码 |
; Valid range 0 - 2147483647. Default = 4096. ; Valid range 0 - 2147483647. Default = 4096. ; Valid range 0 - 2147483647. Default = 4096. ; Valid range 0 - 2147483647. Default = 4096. ; Maximum size of POST data that PHP will accept. |
需要根据实际情况设置。
相关文章
- 这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
- 有一种方法,可以不打开网站而直接查看到这个网站的源代码.. 这样可以有效地防止误入恶意网站... 在浏览器地址栏输入: view-source:http://...2016-09-20
- <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
- 本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
- 在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
- 本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
- php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p> </p> <p> </p> <form name="form1...2016-11-25
- 公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
- 本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
- 微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
- 本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13
- 小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
php导出csv格式数据并将数字转换成文本的思路以及代码分享
php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."/n";然后对需要保存csv的数组进行foreach循环,例如复制代...2014-06-07- ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
- 这篇文章主要介绍了c# 如何对CSV文件操作,帮助大家更好的理解和学习C#,感兴趣的朋友可以了解下...2020-11-03