form表单demo:task.html
<fieldset id="setFiled">
<legend>发布任务</legend>
<form action="registr.php" method="post" id="steForm">
<label>任务类型:</label><br>
<input type="text" name="type" id="taskType" placeholder="请选择任务类型"/><br>
<label>酬&nbsp&nbsp金:</label><br>
<input type="number" name="money" id="forMoney" min="1" max="1000"/><label>元</label><br>
<label>截止时间:</label><br>
<input type="datetime" name="time" id="timeSubmit"/><span data-year="" data-month="" data-date="" id="showDate"></span><br>
<label>详细描述:</label><br>
<textarea maxlength="512" name="textAray" id="msgArea"></textarea><br>
<input type="submit" name="subMit" id="forSub" value="点击发布" />
</form>
扩展资料
php接收POST数据的三种方式
1、$_POST 方式接受数据
$_POST 方式是由通过HTTP的POST方法传递过来的数据组成的数组,是一个自动全局变量。
注:只能接收Content-Type:application/x-www-form-urlencode提交的数据。也就是只能接收表单过来的数据。
2、GLOBLES[‘HTTP_RAW_POST_DATA’]
如果访问原始POST数据不是php能够识别的文档类型,比如:text/xml 或者soap等等,可以用$GLOBLES[‘HTTP_RAW_POST_DATA’]来接收,$HTTP_RAW_POST_DATA变量包含有原始POST数据。此变量仅在碰到未识别的MIME数据时产生。
注:$HTTP_RAW_POST_DATA对于enctype=”multipart/form-data”表单数据不可用,也就是说使用$HTTP_RAW_POST_DATA无法接受网页表单post过来的数据。
3、file_get_contents(“php://input”)
如果访问原始POST数据,更好的方法是使用file_get_content(“php://input”);对于未指定Content-Type的POST数据,可以使用该方法读取POST原始数据,包括二进制流也可以和$HTTP_RAW_POST_DATA比起来。它带来的生存眼里更小,并且不需要任何特殊的php.ini设置。
注:php://input不能用于 enctype=”multipart/form-data”
例如:$postStr = file_get_contents("php://input")//获取POST数据
serial_number.txt的示例内容:serial_number.txt:
DM00001A11 0116,
SN00002A11 0116,
AB00003A11 0116,
PV00004A11 0116,
OC00005A11 0116,
IX00006A11 0116,
创建数据表:
create table serial_number(
id int primary key auto_increment not null,
serial_number varchar(50) not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8
php代码如下:
$conn = mysql_connect('127.0.0.1','root','') or die("Invalid query: " . mysql_error())
mysql_select_db('test', $conn) or die("Invalid query: " . mysql_error())
$content = file_get_contents("serial_number.txt")
$contents= explode(",",$content)//explode()函数以","为标识符进行拆分
foreach ($contents as $k =>$v)//遍历循环
{
$id = $k
$serial_number = $v
mysql_query("insert into serial_number (`id`,`serial_number`)
VALUES('$id','$serial_number')")
}
备注:方法有很多种,我这里是在拆分txt文件为数组后,然后遍历循环得到的数组,每循环一次,往数据库中插入一次。
再给大家分享一个支持大文件导入的
<?php
/**
* $splitChar 字段分隔符
* $file 数据文件文件名
* $table 数据库表名
* $conn 数据库连接
* $fields 数据对应的列名
* $insertType 插入 *** 作类型,包括INSERT,REPLACE
*/
function loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields=array(),$insertType='INSERT'){
if(empty($fields)) $head = "{$insertType} INTO `{$table}` VALUES('"
else $head = "{$insertType} INTO `{$table}`(`".implode('`,`',$fields)."`) VALUES('" //数据头
$end = "')"
$sqldata = trim(file_get_contents($file))
if(preg_replace('/\s*/i','',$splitChar) == '') {
$splitChar = '/(\w+)(\s+)/i'
$replace = "$1','"
$specialFunc = 'preg_replace'
}else {
$splitChar = $splitChar
$replace = "','"
$specialFunc = 'str_replace'
}
//处理数据体,二者顺序不可换,否则空格或Tab分隔符时出错
$sqldata = preg_replace('/(\s*)(\n+)(\s*)/i','\'),(\'',$sqldata) //替换换行
$sqldata = $specialFunc($splitChar,$replace,$sqldata) //替换分隔符
$query = $head.$sqldata.$end //数据拼接
if(mysql_query($query,$conn)) return array(true)
else {
return array(false,mysql_error($conn),mysql_errno($conn))
}
}
//调用示例1
require 'db.php'
$splitChar = '|' //竖线
$file = 'sqldata1.txt'
$fields = array('id','parentid','name')
$table = 'cengji'
$result = loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields)
if (array_shift($result)){
echo 'Success!<br/>'
}else {
echo 'Failed!--Error:'.array_shift($result).'<br/>'
}
/*sqlda ta1.txt
1|0|A
2|1|B
3|1|C
4|2|D
-- cengji
CREATE TABLE `cengji` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parentid` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `parentid_name_unique` (`parentid`,`name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1602 DEFAULT CHARSET=utf8
*/
//调用示例2
require 'db.php'
$splitChar = ' ' //空格
$file = 'sqldata2.txt'
$fields = array('id','make','model','year')
$table = 'cars'
$result = loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields)
if (array_shift($result)){
echo 'Success!<br/>'
}else {
echo 'Failed!--Error:'.array_shift($result).'<br/>'
}
/* sqldata2.txt
11 Aston DB19 2009
12 Aston DB29 2009
13 Aston DB39 2009
-- cars
CREATE TABLE `cars` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`make` varchar(16) NOT NULL,
`model` varchar(16) DEFAULT NULL,
`year` varchar(16) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8
*/
//调用示例3
require 'db.php'
$splitChar = ' ' //Tab
$file = 'sqldata3.txt'
$fields = array('id','make','model','year')
$table = 'cars'
$insertType = 'REPLACE'
$result = loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields,$insertType)
if (array_shift($result)){
echo 'Success!<br/>'
}else {
echo 'Failed!--Error:'.array_shift($result).'<br/>'
}
/* sqldata3.txt
11 Aston DB19 2009
12 Aston DB29 2009
13 Aston DB39 2009
*/
//调用示例3
require 'db.php'
$splitChar = ' ' //Tab
$file = 'sqldata3.txt'
$fields = array('id','value')
$table = 'notExist' //不存在表
$result = loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields)
if (array_shift($result)){
echo 'Success!<br/>'
}else {
echo 'Failed!--Error:'.array_shift($result).'<br/>'
}
//附:db.php
/* //注释这一行可全部释放
?>
<?php
static $connect = null
static $table = 'jilian'
if(!isset($connect)) {
$connect = mysql_connect("localhost","root","")
if(!$connect) {
$connect = mysql_connect("localhost","Zjmainstay","")
}
if(!$connect) {
die('Can not connect to database.Fatal error handle by /test/db.php')
}
mysql_select_db("test",$connect)
mysql_query("SET NAMES utf8",$connect)
$conn = &$connect
$db = &$connect
}
?>
//*/
.
-- 数据表结构:
-- 100000_insert,1000000_insert
CREATE TABLE `100000_insert` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parentid` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
100000 (10万)行插入:Insert 100000_line_data use 2.5534288883209 seconds
1000000(100万)行插入:Insert 1000000_line_data use 19.677318811417 seconds
//可能报错:MySQL server has gone away
//解决:修改my.ini/my.cnf max_allowed_packet=20M
进入docker的mysql容器。进入容器导出数据,首先执行dockerps,找到mysql容器的name,然后执行dockerexec-itmysql/bin/bash,进入容器,执行命令whereismysql,找到mysql的运行路径,我这里是:/usr/local/mysql/bin,用cd进入cd/usr/local/mysql/bin。请注意,这里的路径是指docker容器内的路径,跟您的宿主机路径没有关系,执行导出命令mysqldump-u用户名-p数据库名>保存文件.sql,输入密码后基本导出成功,请注意,保存文件的路径要设置在volumes下面,即/var/lib/mysql/下,随后输入exit退出容器内部,回到宿主机上,我们就能够找到导出的数据文件了,如果您要导出csv格式的话,将mysqldump的那句命令改为:mysql-u用户名--password=密码--database=数据库名--execute='SELECT`FIELD`,`FIELD`FROM`TABLE`LIMIT0,10000'-X>保存文件.sql即可。
docker的作用是:1、更好地利用资源,2、为微服务定制,3、在云服务提供商之间方便移植,4、方便利用API端,5、便于技术的创新。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)