PDO数据库操作类——插入数据的实现
[文章作者:磨延城 转载请注明原文出处: https://mo2g.com/view/77/ ]
mPHP核心框架使用PDO数据库抽象层往数据表中更新或插入数据,都是通过PDO的exec()方法,如果你熟悉Mysql数据库的sql语句,那么理解起来就更轻松了,你可以把它当作mysql的query()来使用,而且exec()执行完毕还会返回影响的数据行总数.
mPHP核心框架使用PDO数据库抽象层往数据表中更新或插入数据,都是通过PDO的exec()方法,如果你熟悉Mysql数据库的sql语句,那么理解起来就更轻松了,你可以把它当作mysql的query()来使用,而且exec()执行完毕还会返回影响的数据行总数。
例如存在表mo2g_test
| id | name |
往mo2g_test中插入数据 id = 1 ,name = PDO,那么mysql的使用方法如下
$strSql = "insert into mo2g_test (id,name) values (1,'PDO')"; mysql_query($strSql); $reslut = mysql_affected_rows();//返回影响了多少行数据
PDO的exec()更简单
$strSql = "insert into mo2g_test (id,name) values (1,'PDO')"; $reslut = $pdo->exec($strSql);//返回影响了多少行数据
其实插入数据的sql都有固定的格式:
1)插入单条数据
insert into 数据表 (字段1,字段2) values (数值1,数值2)
2)插入多条数据
insert into 数据表 (字段1,字段2) values (数值1,数值2),(数值3,数值4),(数值n,数值n+1)
所以,我根据这一特征封装了PDO类的insert方法
function insert($table,$arrData) {}1)$table为数据表的名称
2)$arrData为要插入的数据
使用方法如下:
1)一次插入一条数据:数据库抽象层
$arrData = array('id'=>1,'name'=>'PDO');
$pdo->insert('mo2g_test',$arrData);2)一次插入多条数据:
$arrData = array(
array('id'=>1,'name'=>'PDO'),
array('id'=>2,'name'=>'mPHP')
);
$this->insert('mo2g_test',$arrData);insert函数的实现代码如下
public function insert($table,$arrData) {
$name = $values = '';
$flag = $flagV = 1;
$true = is_array( current($arrData) );//判断是否一次插入多条数据
if($true) {
//构建插入多条数据的sql语句
foreach($arrData as $arr) {
$values .= $flag ? '(' : ',(';
foreach($arr as $key => $value) {
if($flagV) {
if($flag) $name .= "$key";
$values .= "'$value'";
$flagV = 0;
} else {
if($flag) $name .= ",$key";
$values .= ",'$value'";
}
}
$values .= ') ';
$flag = 0;
$flagV = 1;
}
} else {
//构建插入单条数据的sql语句
foreach($arrData as $key => $value) {
if($flagV) {
$name = "$key";
$values = "('$value'";
$flagV = 0;
} else {
$name .= ",$key";
$values .= ",'$value'";
}
}
$values .= ") ";
}
$this->sql = $strSql = "insert into $table ($name) values $values";
if( ($this->result = $this->db->exec($strSql) ) > 0 ) {
return $this;
}
return false;
}如果在使用的过程中遇上什么问题,可以给我留言。

我来说两句: