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; }
如果在使用的过程中遇上什么问题,可以给我留言。
我来说两句: