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

作者:超级管理员 更新时间:2017-09-11 17:57:27 来源:未知 点击:15642
求专家解答:php如何接收远程post过来的txt文本内容并同时写入mysql数据库呢?求完整代码!合适可加分!txt文本内容字段格式:学生id、学生名字、学生邮箱、学生地址-------------
求专家解答: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>
  <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

<?php
require "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

<?php
require "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'; // 接收的url

file_get_contents($url, false, $context);

?>


执行步骤如下,访问http://localhost/post.php
然后访问http://localhost/list.php
如果list.php能显示good.txt文件的内容,表示成功,每运行一次post.php,数据表都会增加一条记录。
-------------------------------
-------------------------------
fdipzone 专家的回复灰常给力,我先试试,晚些时候给分。

推荐阅读

热门内容

php接收post数据并写入mysql问

求专家解答:php如何接收远程post过...

php 旋转图片黑底的问题

php 旋转图片后变成黑底的问题。如何保...

SQL语句有点繁琐,有没有好办法封装一下

               ...

如何实现在微信公众号被关注时自动回复多条

就是怎么实现关注时 回复多条信息  就像...

求一个算法

PHP的异步值传递保存问题

接收页面的PHP$fun=new fun...

做了一个考勤表,逻辑出现了问题

                

关于连接sql server 2008

请问我的是window7系统,php7....

微信群发功能如何实现

百度找了些,但都用不好,看一些评论说现在...

php插件Xajax使用方法详解

Xajax是PHP一个不用刷新或者跳到其...

最新内容

jsp 中sql语句 rs=stat.executequery()插入多条数据

HTTP Status 500 - An exception occurred ...

求哪位大神帮我下载一下ITeye的东西

求哪位大神帮我下载一下ITeye的东西,再发送给我。。送上100分。。地址:ht...

关于多态和异常一个问题

public class A {void foo() throws Except...

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

求专家解答:php如何接收远程post过来的txt文本内容并同时写入mysql数...

这哪错了???

-------------------------------少了一点。。。。。...

java初学者 请教一个问题 大神勿喷 请问我的代码这样写有错误吗?

目的是为了输出1~100间的整数,并且它是3的倍数 不是5的倍数也不是9的倍数。...

php 旋转图片黑底的问题

php 旋转图片后变成黑底的问题。如何保存成透明底的图片。试了很多种方法还是这样...

为什么BinarySearch方法没有执行呢?

package test;//编写程序,随机产生10个整数和一个关键字。分别估算...

求助LAVAREL安装,一直connevting

c:\wamp\www>php "C:\wamp\bin\php\php5.5....

CAS 登录一个app1 了,点击App 2还是要登录,没法无缝登录,为什么

host 已配置# Localhost (DO NOT REMOVE) Star...

php 设计模式

http://www.runoob.com/design-pattern/des...

Spring cloud 加入消息总线后,不能访问controller

今天在尝试做spring cloud config 的配置的时候,发生了一个问题...

discuz给专题里面的文章投票

discuz给专题里面的每一篇文章投票...

php接口求助

如何将取得的数据存入数据库我得到的数据都是$data['name']=$_POS...

你们觉得哪种处理方式好一点,高分 !高分!

是这样,我在一家非互联网公司做java,公司把一个老平台让我 翻新,前台后台数据...

有一个java基础问题,想请教一下大家

大致是这样:main(){   Object a;  method(a);}这个...

关于cglib的动态代理

有个A对象,我用动态代理对A生成A的代理对象A1现在有这个需求,我想继续对A1,...

约瑟夫环,运行报错,请指教一二

/*运行代码,出现这种错,请问怎么解决Exception in thread "...

Java多线程写一个Excel,一个线程写一个sheet能实现吗

我想在一个excel里面写大量数据,大概几十万条,我想一个sheet写65536...

很想看你们的代码风格,贴出一段你个人觉得很优美的java代码(自己写的)

比如:  3         List< Clock > list = null...