PDO预处理

简介:

方法:bool PDOStatement::execute ([ array $input_parameters ] )
1、PDOStatement::execute不使用参数

01)单个绑定值(PDOStatement::bindValue)
//预处理:?号占位符,绑定值,单个值
//使用1,2等数字绑定值
//注意对应关系,例如 name->?(第一个?号)->1
//适用于字段较少的情况
$stmt=$m->prepare("insert into stu(name,age,sex,classid)values(?,?,?,?)");
$stmt->bindValue(1,'caiyu22');
$stmt->bindValue(2,22);
$stmt->bindValue(3,1);
$stmt->bindValue(4,'lamp87');
$stmt->execute();

$stmt->bindValue(1,'caiyu23');
$stmt->bindValue(2,22);
$stmt->bindValue(3,1);
$stmt->bindValue(4,'lamp87');
$stmt->execute();

//或者
$param = array('caiyu', 22, 1, 'lamp88');
foreach($param as $k=> $v){
  $this->bindValue(($k+1), $v);
}
$this->execute();

//预处理:用:号占位符,绑定值,单个值
//使用单引号形式为准备语句里的占位符绑定值 
//注意对应关系,例如 name->:name->'name'
//适用于字段较多的情况
$stmt=$m->prepare("insert into stu(name,age,sex,classid)values(:name,:age,:sex,:classid)");
$stmt->bindValue(':name','caiyu24');
$stmt->bindValue(':age',22);
$stmt->bindValue(':sex',1);
$stmt->bindValue(':classid','lamp87');
$stmt->execute();

 

02)使用批量添加方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//预处理:?号占位符,绑定参数,多个值
$stmt = $m ->prepare( "insert into stu(name,age,sex,classid)values(?,?,?,?)" );
$stmt ->bindParam(1, $name );
$stmt ->bindParam(2, $age );
$stmt ->bindParam(3, $sex );
$stmt ->bindParam(4, $classid );
$data = array (
array ( 'yjc05' ,22,1, 'lamp' ),
array ( 'yjc06' ,22,1, 'lamp' ),
array ( 'yjc07' ,22,1, 'lamp' ),
);
//foreach相当于循环多次
foreach ( $data as $v ){
list( $name , $age , $sex , $classid )= $v ;
$stmt ->execute();
echo "操作成功!" ;
}


 =========================

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//预处理: 用:占位符,绑定参数,多个值
$stmt = $m ->prepare( "insert into stu(name,age,sex,classid)values(:name,:age,:sex,:classid)" );
$stmt ->bindParam( ':name' , $name ); //用:占位符时绑定参数使用引号
$stmt ->bindParam( ':age' , $age );
$stmt ->bindParam( ':sex' , $sex );
$stmt ->bindParam( ':classid' , $classid );
$data = array (
array ( 'yjc08' ,22,1, 'lamp' ),
array ( 'yjc09' ,22,1, 'lamp' ),
array ( 'yjc10' ,22,1, 'lamp' ),
);
//foreach相当于循环多次
foreach ( $data as $v ){
list( $name , $age , $sex , $classid )= $v ;
$stmt ->execute();
echo "操作成功!" ;
}

  

2、PDOStatement::execute使用参数(数组)


无需手动绑定

01)使用:占位符

1
2
3
4
5
6
7
8
9
10
11
12
13
//预处理: 用:占位符,多个值
$stmt = $m ->prepare( "insert into stu(name,age,sex,classid)values(:name,:age,:sex,:classid)" );
 
$data = array (
array ( 'name' => 'yjc11' , 'age' =>22, 'sex' =>1, 'classid' => 'lamp' ),
array ( 'name' => 'yjc12' , 'age' =>22, 'sex' =>1, 'classid' => 'lamp' ),
array ( 'name' => 'yjc13' , 'age' =>22, 'sex' =>1, 'classid' => 'lamp' ),
);
//foreach相当于循环多次
foreach ( $data as $v ){
$stmt ->execute( $v );
echo "操作成功!" ;
}


02)使用?占位符

1
2
3
4
5
6
7
8
9
10
11
12
13
//预处理: 用?占位符,多个值
$stmt = $m ->prepare( "insert into stu(name,age,sex,classid)values(?,?,?,?)" );
 
$data = array (
array ( 'yjc14' ,22,1, 'lamp' ),
array ( 'yjc15' ,22,1, 'lamp' ),
array ( 'yjc16' ,22,1, 'lamp' ),
);
//foreach相当于循环多次
foreach ( $data as $v ){
$stmt ->execute( $v );
echo "操作成功!" ;
}

  


目录
相关文章
|
4月前
|
SQL 存储 关系型数据库
MySQL - 动态SQL与预处理语句
MySQL - 动态SQL与预处理语句
46 0
|
SQL 安全 关系型数据库
PDO 预处理|学习笔记
快速学习 PDO 预处理,本节学习PDO的预处理。与事务相同并不是PDO的功能,本节介绍PDO如何实现预处理。
205 0
PDO 预处理|学习笔记
|
SQL 关系型数据库 MySQL
Mysql中varchar字符串的比较,swoole预处理参数绑定
使用的是php swoole,预处理。 解决有两条路:mysql的字段类型改为数字;研究swoole的参数预处理问题,可以测试普通PHP的预处理是否也有问题
94 0
|
关系型数据库 MySQL 数据库连接
PDO 预处理数据绑定|学习笔记
快速学习 PDO 预处理数据绑定,PDO预处理数据绑定有多种方式。
210 0
PDO 预处理数据绑定|学习笔记
|
SQL 关系型数据库 MySQL
PDO 写操作|学习笔记
快速学习 PDO 写操作,利用PDO类完成一个完整的写操作实现,实现数据库的操作。
58 0
PDO 写操作|学习笔记
|
PHP 开发者
封装 PDO(小结)|学习笔记
快速学习封装 PDO(小结)
40 0
|
存储 关系型数据库 MySQL
【MySQL】使用pdo调用存储过程 --带参数输出
【MySQL】使用pdo调用存储过程 --带参数输出
145 0
【MySQL】使用pdo调用存储过程 --带参数输出
|
关系型数据库 MySQL