php中将文本数据库转为mysql数据库
代码如下 | 复制代码 |
<?php require_once 'config.php'; $action = empty($_GET['action']) ? '' : $_GET['action']; $id = isset($_GET['id']) ? $_GET['id'] : 0; if (empty($action)) {//列表 $result = "SELECT * FROM posts ORDER BY pid DESC"; $items = 3; $page = isset($_GET['page']) ? intval($_GET['page']) : 1; $page = ($page =='' && $page < 0) ? 1 : $page; $total = mysql_num_rows(mysql_query($result));//数据条目总数 $pageall = ceil($total/$items); $offset = ($page-1)*$items;//数据开始位置 $result .= " limit {$offset},{$items}";//每页显示 $results = mysql_query($result); $prev = $page - 1; $next = $page + 1; $goPrev = "<a href="?page=$prev">上一页</a>"; $goNext = "<a href="?page=$next">下一页</a>"; if ($page == $pageall){ $goNext = NULL;} $pagestate = ''; if ($page == 1 && $pageall > 1) { $pagestate .= $goNext; } elseif ($pageall > $page || $page >1) { $pagestate .= $goNext . '|' .$goPrev; } elseif ($page >1 ) { $pagestate .= $goPrev; } else { $pagestate .= 'Just One Page'; } $pagelinks = ''; for ($i = 1; $i <= $pageall; $i++) { $pagelinks .= ($i != $page) ? "<a href="?page=$i">$i</a>" : $i; $pagelinks .= ($i < $pageall) ? '-' : null; } // end 分页 $data = array(); //列出文章 while ($row = mysql_fetch_array($results)) {//mysql_fetch_array ; 从查询结果取出一行作为数组; $data[] = $row;// } //列出分类 $recat = mysql_query("SELECT * FROM category ORDER BY cid DESC"); $cdata = array(); while ($catlist = mysql_fetch_array($recat)) { $cdata[$catlist['cid']] = $catlist; } include template('index'); } elseif ($action == 'post') {//发表 $title = $_POST['title']; $date = date("Y-m-d H:i:s"); $content = $_POST['content']; $cid = $_POST['cat']; if ($title == '' || $content == '' || $cid == '') { echo "缺少必填项nnnn<a href="javascript:history.go(-1);">返回</a>"; } else { $insertPost = "INSERT INTO posts (title,time,post,cid) VALUES ('$title','$date','$content','$cid')"; if (!mysql_query($insertPost,$sql)) { die('ERROR: '. mysql_error()); } header('location: index.php'); } } elseif ($action == 'view') {//查看 $view = mysql_query("SELECT * FROM posts WHERE pid='$id'"); while ($row = mysql_fetch_array($view)) { $title = $row['title']; $time = $row['time']; $post = $row['post']; } if ($_SERVER['REQUEST_METHOD'] == 'POST') {//评论 $name = isset($_POST['name']) ? $_POST['name'] : 0; $review = isset($_POST['review']) ? $_POST['review'] : 0; if ($name == '' && $review == '') { echo "缺少必填项"; exit; } $insertRview = "INSERT INTO review (pid,name,review) VALUES ('$id','$name','$review')"; if (!mysql_query($insertRview,$sql)) { die('ERROR: ' . mysql_error()); } header("location: ?action=view&id=$id"); } $rert = mysql_query("SELECT * FROM review WHERE pid='$id' ORDER BY rid ASC"); $data = array(); while ($relist = mysql_fetch_array($rert)){ $data[] = $relist; } include template('view'); } elseif ($action == 'del') {//删除 mysql_query("DELETE FROM posts WHERE pid='$id'"); header("location: index.php"); } elseif ($action == 'edit') {//编辑 if ($_SERVER['REQUEST_METHOD'] == 'POST') { $title = $_POST['title']; $content = $_POST['content']; $date = date("Y-m-d H:i:s"); if ($title == '' or $content == '') { echo "缺少必填项nnnn<a href="javascript:history.go(-1);">返回</a>"; exit;} mysql_query("UPDATE posts SET title='$title',time='$date',post='$content' WHERE pid='$id'"); header("location: index.php"); } else { $row = mysql_query("SELECT * FROM posts WHERE pid='$id'"); $row = mysql_fetch_array($row); include template('edit'); } } elseif ($action == 'newcat') {//新建分类 $cat = isset($_POST['category']) ? $_POST['category'] : 0; if ($_SERVER['REQUEST_METHOD'] == 'POST') { if ($cat == '') { echo "缺少必填项nnnn<a href="javascript:history.go(-1);">返回</a>"; exit;} $insertCat = "INSERT INTO category (category) VALUES ('$cat')"; if (!mysql_query($insertCat,$sql)){ die('ERROR: ' . mysql_error()); } header("location: index.php"); } include template('jioncat'); } elseif ($action == 'vcat') { $cid = $_GET['cid']; $revcats = "SELECT * FROM posts WHERE cid='$cid' ORDER BY cid DESC"; $items = 1; $page = isset($_GET['page']) ? intval($_GET['page']) : 1; $page = ($page =='' && $page < 0) ? 1 : $page; $total = mysql_num_rows(mysql_query($revcats));//数据条目总数 $pageall = ceil($total/$items); $offset = ($page-1)*$items;//数据开始位置 $revcats .= " limit {$offset},{$items}";//每页显示 $revcat = mysql_query($revcats); $prev = $page - 1; $next = $page + 1; $goPrev = "<a href="?action=vcat&cid=$cid&page=$prev">上一页</a>"; $goNext = "<a href="?action=vcat&cid=$cid&page=$next">下一页</a>"; if ($page == $pageall){ $goNext = NULL;} $pagestate = ''; if ($page == 1 && $pageall > 1) { $pagestate .= $goNext; } elseif ($pageall > $page || $page >1) { $pagestate .= $goNext . '|' .$goPrev; } elseif ($page >1 ) { $pagestate .= $goPrev; } else { $pagestate .= 'Just One Page'; } $pagelinks = ''; for ($i = 1; $i <= $pageall; $i++) { $pagelinks .= ($i != $page) ? "<a href="?action=vcat&cid=$cid&page=$i">$i</a>" : $i; $pagelinks .= ($i < $pageall) ? '-' : null; } $data = array(); while ($vclist = mysql_fetch_array($revcat)) { $data[] = $vclist; } include template('cplist'); } mysql_close($sql); |
题外话了,一个access转换成mysql数据库的实例
点击下载:http://file.111cn.net/download/2013/05/14/db2mysql.zip
因为工作需要我们需要把mysql中的数据导出成csv文件,然后由商家提供的数据我们再要利用php导入csv文件到mysql数据库,下面我来给大家介绍PHP把导入和导出CSV文件到mysql数据库程序代码,有需要了解的朋友可参考。
下面只是一个简单的实例
我们先准备mysql数据表,假设项目中有一张记录学生信息的表student,并有id,name,sex,age分别记录学生的姓名、性别、年龄等信息。
代码如下 | 复制代码 |
CREATE TABLE `student` ( |
我们还需要一个html交互页面,放置导入表单和导出按钮。
代码如下 | 复制代码 |
<form id="addform" action="do.php?action=import" method="post" enctype="multipart/form-data"> |
选择好本地csv文件后,点击导入,提交到do.php?action=import处理,而点击导出按钮则请求地址do.php?action=export进行数据导出处理。
1.导入CSV
do.php需要根据get过来的参数,分别处理导入和导出过程,php结构如下:
include_once ("connect.php"); //连接数据库
代码如下 | 复制代码 |
$action = $_GET['action']; if ($action == 'import') { //导入CSV //导入处理 } elseif ($action=='export') { //导出CSV //导出处理 } |
导入CSV处理流程:校验csv文件合法性(本文忽略)->打开读入并解析csv文件中的字段->循环获取各字段值->批量添加到数据表中->完成。
代码如下 | 复制代码 |
if ($action == 'import') { //导入CSV |
注意php自带的fgetcsv函数可以轻松处理csv,使用该函数可以从文件指针中读入一行并解析CSV字段。下面的函数将csv文件字段解析并以数组的形式返回。
代码如下 | 复制代码 |
function input_csv($handle) { |
此外在导入到数据库中时,我们采用的是批量插入而不是一条条插入的,因此在构建SQL语句时,要稍作处理,见代码。
2.导出CSV
我们知道csv文件是由逗号分割符组成的纯文本文件,你可以用excel打开,效果跟xls表个一样。
导出CSV处理流程:读取学生信息表->循环记录构建逗号分隔的字段信息->设置header信息->导出文件(下载)到本地
代码如下 | 复制代码 |
... |
要将数据导出到本地即下在,需要修改header信息,代码如下:
代码如下 | 复制代码 |
function export_csv($filename,$data) { |
注意导入和导出的过程中,因为我们使用的是统一UTF-8编码,遇到中文字符一定要记得转码,否则可能会出现中文乱码的情况。
PHP把导入和导出CSV文件下载:http://file.111cn.net/download/2013/05/15/importCSV.rar
购物车数量意思就是在我们买东西时可以随时删除工增加商品,这样我们的购物车就必须更新记录啊,下面我来给大家介绍PHP购物车更新购物车数量程序与原因,有需要了解的朋友可参考。表单部分:
代码如下 | 复制代码 |
<form action="?action=edit_num" method="post" name="car<?php $c_rs['id'];?>" id="car<?php $c_rs['id'];?>"> <input name="suliang[<?php echo $c_rs['sp_id'];?>]" type="text" id="suliang[<?php echo $c_rs['sp_id'];?>]" value="<?php echo $c_rs['suliang'];?>"/> <input type="submit" name="button" id="button" value="更新购物车" /> </form> |
PHP 处理部分:
代码如下 | 复制代码 |
<?php require 'config.inc.php'; require 'checklogin.php'; $username = $_SESSION['username']; $action = $_GET['action']; switch ($action) { case "edit_num": $arr = $arr = $_POST['suliang']; foreach($arr as $key=>$value){ $sqlgx = "update `cartemp` set suliang='$value' where username='".$username."' and flag=0 and sp_id='".$key."'"; mysql_query($sqlgx, $conn); echo "<script>location.href='shopcat.php'</script>"; } break; case "null": $null_sql = "delete from `cartemp` where username='$username' and flag=0 "; mysql_query($null_sql, $conn); echo "<script>location.href='shopcat.php'</script>"; break; case "del": $id = $_GET['id']; $del_sql = "delete from `cartemp` where id=$id"; mysql_query($del_sql, $conn); echo "<script>location.href='shopcat.php'</script>"; break; } ?> |
上面全部使用了数据库来操作,下面来个完全的类
代码如下 | 复制代码 |
|
Drupal 通过Library 调用 PHPExcl
将PHPExcel 下载后,上传到Drupal目录:sites/all/libraries/PHPExcel
如果你的项目中安装了libraries模块,可以通过libraries_load($name);来调用。
如果没有安装libraries模块,可以简单的使用下列代码来调用:
代码如下 | 复制代码 |
require("sites/all/libraries/PHPExcel/PHPExcel/IOFactory.php"); |
注意为了确保Excel全部导入,程序可以会话很长的时间来进行。
所以在代码开头部分加入:
代码如下 | 复制代码 |
set_time_limit(0); |
来确保运行时间不受限制。
Drupal 读取Excel并导入到数据库
Drupal 实现上传Excel文件后,读取Excel 内容,写入到数据库,打印导入结果消息。
归纳起来有这样几点:
Drupal 读取Excel 多行多列内容,列数从1到n,行数也是1到n。
Drupal 根据数据库结构 n 个字段分别用于存放Excel 1到n列,如果Excel 的列数很多,可以把n列值存放在1个字段中。
这里我解决的是Excel n列值存放到MySQL n个字段中(n不是很大)
这就是在Drupal最后提交上传文件后的函数:
代码如下 | 复制代码 |
<?php function excel_upload_form_submit($form, &$form_state) { set_time_limit(0); $timestamp = time(); // 确保Excel文件上传了 if ($file = file_save_upload(‘file’)) { $row = 0; //解析行数 $paseRows = 0; //跳过行数 没有值的行 $insertRows = 0; //插入行数 $table = array( ‘dbfield1′, ‘dbfield2′, ‘dbfield3, ‘dbfield4′, ‘dbfield5′, … ‘dbfieldn’, ); require("sites/all/libraries/PHPExcel/PHPExcel/IOFactory.php"); if(($handle = fopen ( $file->filepath, "r" )) !== FALSE) { $PHPExcel = new PHPExcel (); $PHPReader = new PHPExcel_Reader_Excel2007 (); if (! $PHPReader->canRead ( $file->filepath )) { $PHPReader = new PHPExcel_Reader_Excel5 (); if (! $PHPReader->canRead ( $file->filepath )) { echo ‘no Excel’; return; } } $PHPExcel = $PHPReader->load ( $file->filepath ); $currentSheet = $PHPExcel->getSheet ( 0 ); /**取得一共有多少列*/ $allColumn = $currentSheet->getHighestColumn(); //取得共有多少列,若不使用此静态方法,获得的$col是文件列的最大的英文大写字母 $col = PHPExcel_Cell::columnIndexFromString($currentSheet->getHighestColumn()); /**取得一共有多少行*/ $allRow = $currentSheet->getHighestRow(); //循环读取每个单元格的内容。注意行从1开始,列从A开始 for($rowIndex = 2; $rowIndex <= $allRow; $rowIndex++) { $token_db = $row_db = $field = array(); $i = 0; $query = ”; for($colIndex = 0; $colIndex <= $col; $colIndex++) { //$addr = $colIndex.$rowIndex; //$cell = $currentSheet->getCell($addr)->getValue(); $cell = $currentSheet->getCellByColumnAndRow($colIndex, $rowIndex)->getValue(); $cell = trim($cell); if($cell instanceof PHPExcel_RichText) { //富文本转换字符串 $cell = $cell->__toString(); } if ($colIndex == ‘A’ && !intval($cell)) { $paseRows++; break; } $field[] = $table[$i]; $token_db[] = "’%s’"; $row_db[] = $cell; $query .= $table[$i]." = ‘%s’, "; $i++; } $row++; if ($row_db) { db_query(‘INSERT INTO {db_import} (‘. implode(‘, ‘, $field) .’, created) VALUES(‘. implode(‘, ‘, $token_db) .’, %d)’, array_merge($row_db, array($timestamp))); $insertRows++; } } fclose ( $handle ); } drupal_set_message(t(‘文件 @file 导入成功.’, array(‘@file’ => $file->filename))); drupal_set_message("解析".$row."条数据完毕,新增共".$insertRows."条数据,没有试题类型ID的".$paseRows."条数据。"); } else { drupal_set_message(t(‘File to import not found.’), ‘error’); $form_state['redirect'] = ‘admin/content/db/import’; return; } } ?> |
上面代码部分注意一下几点:
代码如下 | 复制代码 |
|
获取的列为英文大写字母的数组索引。
代码如下 | 复制代码 |
$col = PHPExcel_Cell::columnIndexFromString($currentSheet->getHighestColumn()); |
将英文大写字母索引格式化为数字,索引值从0开始计算。
本代码支持读取Excel 2007 及之前的格式。
phpMyAdmin配置文件在libraries下的config.default.php中,主要配置如下:
一般的话,如果你的mysql和phpmyadmin放在同一服务器上,主机名就直接用localhost
代码如下 | 复制代码 |
$cfg['Servers'][$i]['host'] = 'localhost'; |
然后就是要配置mysql的用户名和密码了:
代码如下 | 复制代码 |
$cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = *****'; |
暂时没需要就这些基本配置了,然后将phpMyAdmin上传到服务器根目录,用
http://网站域名/phpMyAdmin/ 访问
其它一些方法
D.认证方法
代码如下 | 复制代码 |
$cfg['Servers'][$i]['auth_type'] = 'cookie'; |
在此有四种模式可供选择,cookie,http,HTTP,config
config方式即输入phpmyadmin的访问网址即可直接进入,无需输入用户名和密码,是不安全的,不推荐使用。
当该项设置为cookie,http或HTTP时,登录phpmyadmin需要数据用户名和密码进行验证,,具体如下:
PHP安装模式为Apache,可以使用http和cookie;
PHP安装模式为CGI,可以使用cookie
我个人建议:无论是本地还是网络上,都建议设置成cookie,安全第一。
E.短语密码(blowfish_secret)的设置
代码如下 | 复制代码 |
$cfg['blowfish_secret'] = ''; |
如果认证方法设置为cookie,就需要设置短语密码,置于设置为什么密码,由您自己决定 ,但是不能留空,否则会在登录phpmyadmin时提示错误
F.设置默认语言与编码
查找
代码如下 | 复制代码 |
$cfg['DefaultLang'] = 'zh'; |
在phpmyadmin中,总共有四种登录方式
config:直接输入phpmyadmin远程登录地址即可,只要在配置文件中设置用户名密码即可。
http:弹出对话框,输入用户名和密码后进入
signon:类似于页面跳转的登录方式,同时需要设定$cfg['Servers'][$i]['SignonURL'],当你输入phpmyadmin的远程登录地址后会自动跳转到signonURL设定的网址。
cookie:也就是phpmyadmin配置时候的登录方式。
至此整个phpmyadmin3的安装和配置工作就算完成了,你可以体验phpmyadmin新版本的新功能了。
相关文章
- 操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
- 本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
- 最基础的对数据的增加删除修改操作实例,菜鸟们收了吧...2013-09-26
- 这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
- 这篇文章主要介绍了解决Mybatis 大数据量的批量insert问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-09
Antd-vue Table组件添加Click事件,实现点击某行数据教程
这篇文章主要介绍了Antd-vue Table组件添加Click事件,实现点击某行数据教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-17- 这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
- 这篇文章主要介绍了Intellij IDEA连接Navicat数据库的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借价值,需要的朋友可以参考下...2021-03-25
- 在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
- 这篇文章主要介绍了vue 获取到数据但却渲染不到页面上的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-19
- C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
- 通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。 但是ping mysql所在服务器却很快! 想到很久之前有过类似的经验, telnet等一些服务在连接请求的时候,会做一些反向域名解析(如果...2015-10-21
- 这篇文章主要介绍了mybatis-plus 处理大数据插入太慢的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-18
- 在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
- 某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:1. 首先创建新的数据库newd...2015-10-21
- mysqldump命令的用法1、导出所有库系统命令行mysqldump -uusername -ppassword --all-databases > all.sql 2、导入所有库mysql命令行mysql>source all.sql; 3、导出某些库系统命令行mysqldump -uusername -ppassword...2015-10-21
- 1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库...2013-09-23
- 这篇文章主要介绍了postgresql数据添加两个字段联合唯一的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-04
- 这篇文章主要介绍了c#从数据库里取得数据并异步更新ui的方法,大家参考使用吧...2020-06-25
Vue生命周期activated之返回上一页不重新请求数据操作
这篇文章主要介绍了Vue生命周期activated之返回上一页不重新请求数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-26