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 />
<?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将这些数组里的键值与内容分解出来处理。