php接收post数据并写入mysql问题

php中文网
发布: 2016-06-23 13:47:24
原创
1637人浏览过

求专家解答:php如何接收远程post过来的txt文本内容并同时写入mysql数据库呢?求完整代码!合适可加分!
txt文本内容字段格式:
学生id、学生名字、学生邮箱、学生地址


回复讨论(解决方案)

数据表:

CREATE TABLE `student` (  `id` int(10) unsigned NOT NULL auto_increment,  `xid` varchar(20) NOT NULL,  `name` varchar(20) NOT NULL,  `email` varchar(100) NOT NULL,  `address` varchar(100) NOT NULL,  PRIMARY KEY  (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
登录后复制


postdemo.php
<?php// 连接数据库  $conn=@mysql_connect("数据库ip","帐号","密码")  or die(mysql_error());  @mysql_select_db('数据库名',$conn) or die(mysql_error());  $action = isset($_REQUEST['action'])? $_REQUEST['action'] : '';if($action=='add'){    $xid = isset($_POST['xid'])? mysql_escape_string($_POST['xid']) : '';    $name = isset($_POST['name'])? mysql_escape_string($_POST['name']) : '';    $email = isset($_POST['email'])? mysql_escape_string($_POST['email']) : '';    $address = isset($_POST['address'])? mysql_escape_string($_POST['address']) : '';    if($xid=='' || $name=='' || $email=='' || $address==''){        echo 'please input data';        exit();    }    $sqlstr = "insert into student(xid,name,email,address) values('".$xid."','".$name."','".$email."','".$address."')";    mysql_query($sqlstr) or die(mysql_error());    header('location:postdemo.php');}else{?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head>  <meta http-equiv="content-type" content="text/html; charset=utf-8">  <title>demo</title> </head> <body>  <form name="form1" method="post" action="postdemo.php">  <p>学生id:<input type="text" name="xid"></p>  <p>学生名字:<input type="text" name="name"></p>  <p>学生邮箱:<input type="text" name="email"></p>  <p>学生地址:<input type="text" name="address"></p>
                    <div class="aritcle_card">
                        <a class="aritcle_card_img" href="/xiazai/shouce/1897">
                            <img src="https://img.php.cn/upload/manual/000/000/002/170908952964318.jpg" alt="易语言学习手册 十天学会易语言图解教程  pdf版">
                        </a>
                        <div class="aritcle_card_info">
                            <a href="/xiazai/shouce/1897">易语言学习手册 十天学会易语言图解教程  pdf版</a>
                            <p>十天学会易语言图解教程用图解的方式对易语言的使用方法和操作技巧作了生动、系统的讲解。需要的朋友们可以下载看看吧!全书分十章,分十天讲完。 第一章是介绍易语言的安装,以及运行后的界面。同时介绍一个非常简单的小程序,以帮助用户入门学习。最后介绍编程的输入方法,以及一些初学者会遇到的常见问题。第二章将接触一些具体的问题,如怎样编写一个1+2等于几的程序,并了解变量的概念,变量的有效范围,数据类型等知识。其后,您将跟着本书,编写一个自己的MP3播放器,认识窗口、按钮、编辑框三个常用组件。以认识命令及事件子程序。第</p>
                            <div class="">
                                <img src="/static/images/card_xiazai.png" alt="易语言学习手册 十天学会易语言图解教程  pdf版">
                                <span>3</span>
                            </div>
                        </div>
                        <a href="/xiazai/shouce/1897" class="aritcle_card_btn">
                            <span>查看详情</span>
                            <img src="/static/images/cardxiayige-3.png" alt="易语言学习手册 十天学会易语言图解教程  pdf版">
                        </a>
                    </div>
                <p><span>立即学习</span>“<a href="https://pan.quark.cn/s/7fc7563c4182" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">PHP免费学习笔记(深入)</a>”;</p>  <p><input type="hidden" name="action" value="add"><input type="submit" name="b1" value="提交"></p>  </form> <?php    $sqlstr = "select * from student order by id";    $query = mysql_query($sqlstr) or die(mysql_error());    $result = array();    while($thread=mysql_fetch_assoc($query)){        $result[] = $thread;    }    if($result){        echo '<table>';        echo '<th>NO</th><th>学生id</th><th>学生名字</th><th>学生邮箱</th><th>学生地址</th>';        foreach($result as $row){            echo '<tr>';            echo '<td>'.$row['id'].'</td>';            echo '<td>'.$row['xid'].'</td>';            echo '<td>'.$row['name'].'</td>';            echo '<td>'.$row['email'].'</td>';            echo '<td>'.$row['address'].'</td>';            echo '</tr>';        }        echo '</table>';    } ?>   </body></html><?php}?>
登录后复制

谢谢专家解答,有个地方没有表述清楚,txt文本内容非表单提交,是由远程客户端直接post过来整个txt文件,例如:
post的文件名:good.txt
文件内容:
001
王军
wangjun@126.com
山东省青岛市滨海路2号

请问专家,后台的接收代码是不是有变化?
使用php怎么模拟post good.txt文件给后台?
先在此谢过啦

只要是使用post方式提交的数据,都能够使用$_POST['变量名']的方式接收.

<?php$content = file_get_contents('php://input');?>
登录后复制

模拟文件上传?

干嘛非要用文件

用正则匹配找出对应数据

你是要上?一?txt文件,然後服?器把txt的?容?入??????

fdipzone专家好,我没有表述清楚,现重新梳理:txt文件非表单提交,是远程的客户端post过来一个txt文件,并写入mysql数据库。
例如:post的文件名:good.txt,文件内容
001
王军
wangjun@126.com
山东省青岛市滨海路2号

由于是远程客户端直接post good.txt文件,所以提交的数据没有变量名,而是直接的字符串,是不是不能用$_POST接收?

文件流吗?
下面的例子将完成php post文件流,接收文件流,分析文件流,写入数据库四个步骤
1.conn.php 用于连接数据库
2.list.php 用于显示数据库表记录
3.add.php 用于接收流文件并分析写入数据库
4.post.ph 用于发送流文件
5.good.txt 文件,用来发送用,内容是

001王军wangjun@126.com山东省青岛市滨海路2号
登录后复制

假设以上文件都放在根目录,可以用http://localhost/文件名 访问到。

首先创建数据库
CREATE TABLE `student` (  `id` int(10) unsigned NOT NULL auto_increment,  `xid` varchar(20) NOT NULL,  `name` varchar(20) NOT NULL,  `email` varchar(100) NOT NULL,  `address` varchar(100) NOT NULL,  PRIMARY KEY  (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
登录后复制


conn.php
<?php// 连接数据库  $conn=@mysql_connect("数据库host","帐号","密码")  or die(mysql_error());  @mysql_select_db('数据库名',$conn) or die(mysql_error());  ?>
登录后复制


list.php
<?phprequire "conn.php";?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head>  <meta http-equiv="content-type" content="text/html; charset=utf-8">  <title>demo</title> </head>  <body>  <?php    $sqlstr = "select * from student order by id";    $query = mysql_query($sqlstr) or die(mysql_error());    $result = array();    while($thread=mysql_fetch_assoc($query)){        $result[] = $thread;    }     if($result){        echo '<table>';        echo '<th>NO</th><th>学生id</th><th>学生名字</th><th>学生邮箱</th><th>学生地址</th>';        foreach($result as $row){            echo '<tr>';            echo '<td>'.$row['id'].'</td>';            echo '<td>'.$row['xid'].'</td>';            echo '<td>'.$row['name'].'</td>';            echo '<td>'.$row['email'].'</td>';            echo '<td>'.$row['address'].'</td>';            echo '</tr>';        }        echo '</table>';    }  ?>    </body></html>
登录后复制


add.php
<?phprequire "conn.php";$tmpfile = 'tmp.txt'; // 临时文件,用于保存接收到的文件流$content = $GLOBALS['HTTP_RAW_POST_DATA'];if(empty($content)){      $content = file_get_contents('php://input');}file_put_contents($tmpfile, $content, true);  $file = file_get_contents($tmpfile);$data = explode(chr(10), $file); // 分解成数组$xid = mysql_escape_string($data[0]);$name = mysql_escape_string($data[1]);$email = mysql_escape_string($data[2]);$address = mysql_escape_string($data[3]);$sqlstr = "insert into student(xid,name,email,address) values('".$xid."','".$name."','".$email."','".$address."')";    mysql_query($sqlstr) or die(mysql_error());header('location:list.php');?>
登录后复制


post.php
<?php$data = file_get_contents('good.txt'); // 要发送的文件$opts = array(	'http' => array(		'method' => 'POST',		'header' => 'content-type:application/x-www-form-urlencoded',		'content' => $data	));$context = stream_context_create($opts);$url = 'http://localhost/add.php'; // 接收的urlfile_get_contents($url, false, $context);?>
登录后复制


执行步骤如下,访问http://localhost/post.php
然后访问http://localhost/list.php
如果list.php能显示good.txt文件的内容,表示成功,每运行一次post.php,数据表都会增加一条记录。

fdipzone 专家的回复灰常给力,我先试试,晚些时候给分。

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号