简化PHP数据提交的方法
2011-12-31 11:02
731 查看
PHP数据提交的方法很多,普通的方法是通过HTML页上面的文本框名称来POST到后台PHP程序中进行数据库的增加、删除、更新操作。这里提供另外一种可以复用的方法与思路,下面以SQLITE数据库为基础做个代码示范:
//user.php
<?php
require_once("Sqlite.php");//加载数据库类
//if (isset($_GET["user"]) and isset($_GET["passwd"])) {
$db=new Sqlite();//新建数据库类
$db->getConn();//建立数据库连接
?>
<h4>用户管理</h4>
<form enctype="multipart/form-data" action="user.php" method="POST">
<fieldset name="Group1">
<legend>用户信息</legend>
工 号:<input type="text" name="arr[gh]" /><br />
姓 名:<input type="text" name="arr[xm]" /><br />
部 门:<input type="text" name="arr[ss]" /><br />
<input class="inputbut" type="submit" name="add" value="新增保存"/>
<?php
if (isset($_POST["add"])) {
$rs=$db->AddLine('user',$_POST[arr]);
if ($rs>0) {echo "新增成功!";}
}
?>
//sqlite.php //数据库操作类
<?php
// 基类
class Sqlite {
public $sth;
public $dbh;
/*
var $DB;function Conn()
{
}
*/
function getConn(){ //取得数据库连接
try{
//echo 'sqlite:'.dirname(__FILE__).'db';
$this->dbh = new PDO('sqlite:'.dirname(__FILE__).'/db', null, null);
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e)
{
echo 'Connection failed: ' . $e->getMessage();
$this->dbh = null;
}
}
function AddLine($bm,$arr){ //插入记录参数$bm(表名),$arr(字段数组)
$zd='';
$nr='';
foreach($arr as $key=>$val){ //此处的$key 和$val 都是自定义的
$zd=$zd."'$key',";
$nr=$nr."'$val',";
}
$zd=substr($zd,0,strlen($zd)-1);
$nr=substr($nr,0,strlen($nr)-1);
$sql="insert into $bm ($zd) values ($nr)";
//echo '$zd='.substr($zd,0,strlen($zd)-1).'<br>';
//echo '$nr='.$nr.'<br>';
$rs=$this->dbh->exec($sql);
return $rs;
}
}
?>
用以上的AddLine来插入记录,不管是什么样的数据库表结构都可以应付不如,而不用重写insert的方法。原理就是应用PHP可以将HTML中arr[xxx]这样的name名识别成数组,然后利用PHP将这些数组里的键值与内容分解出来处理。
//user.php
<?php
require_once("Sqlite.php");//加载数据库类
//if (isset($_GET["user"]) and isset($_GET["passwd"])) {
$db=new Sqlite();//新建数据库类
$db->getConn();//建立数据库连接
?>
<h4>用户管理</h4>
<form enctype="multipart/form-data" action="user.php" method="POST">
<fieldset name="Group1">
<legend>用户信息</legend>
工 号:<input type="text" name="arr[gh]" /><br />
姓 名:<input type="text" name="arr[xm]" /><br />
部 门:<input type="text" name="arr[ss]" /><br />
<input class="inputbut" type="submit" name="add" value="新增保存"/>
<?php
if (isset($_POST["add"])) {
$rs=$db->AddLine('user',$_POST[arr]);
if ($rs>0) {echo "新增成功!";}
}
?>
//sqlite.php //数据库操作类
<?php
// 基类
class Sqlite {
public $sth;
public $dbh;
/*
var $DB;function Conn()
{
}
*/
function getConn(){ //取得数据库连接
try{
//echo 'sqlite:'.dirname(__FILE__).'db';
$this->dbh = new PDO('sqlite:'.dirname(__FILE__).'/db', null, null);
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e)
{
echo 'Connection failed: ' . $e->getMessage();
$this->dbh = null;
}
}
function AddLine($bm,$arr){ //插入记录参数$bm(表名),$arr(字段数组)
$zd='';
$nr='';
foreach($arr as $key=>$val){ //此处的$key 和$val 都是自定义的
$zd=$zd."'$key',";
$nr=$nr."'$val',";
}
$zd=substr($zd,0,strlen($zd)-1);
$nr=substr($nr,0,strlen($nr)-1);
$sql="insert into $bm ($zd) values ($nr)";
//echo '$zd='.substr($zd,0,strlen($zd)-1).'<br>';
//echo '$nr='.$nr.'<br>';
$rs=$this->dbh->exec($sql);
return $rs;
}
}
?>
用以上的AddLine来插入记录,不管是什么样的数据库表结构都可以应付不如,而不用重写insert的方法。原理就是应用PHP可以将HTML中arr[xxx]这样的name名识别成数组,然后利用PHP将这些数组里的键值与内容分解出来处理。
相关文章推荐
- php防止伪造数据从地址栏URL提交的方法
- php中使用Curl、socket、file_get_contents三种方法POST提交数据
- php模拟post提交数据方法
- asp和php下textarea提交大量数据发生丢失的解决方法
- PHP模拟POST提交数据并获得返回值之CURL方法(使用PHP extension,然后使用php_curl.dll,很不错)
- PHP模拟POST提交数据并获得返回值之CURL方法
- php模拟post提交数据的方法
- php 模拟POST提交数据的2种方法
- php防止伪造数据从URL提交解决方法
- PHP中用jQuery 的操作POST方法提交数据(用login测试)
- php 表单提交大量数据发生丢失的解决方法
- php采用ajax数据提交post与post常见方法总结
- php模拟post提交数据的方法
- php 表单提交大量数据发生丢失的解决方法
- php表单提交时获取不到post数据的解决方法
- php防止伪造的数据从URL提交方法
- php中模拟POST提交数据两种方法
- PHP模拟post提交数据方法汇总
- PHP利用CURL方法模拟POST提交数据并获得返回值的小细节
- asp和php下textarea提交大量数据发生丢失的解决方法