簡化PHP資料提交的方法
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將這些數組裡的鍵值與內容分解出來處理。