php pdo mysql 预处理

预处理好处:编译一次多次执行,用来解决一条SQL语句多次执行的问题,提高了执行效率。

预处理语句:

prepare 预处理名字 from 'sql语句'

执行预处理

execute 预处理名字 [using 变量]

mysql中

---首先修改执行符
mysql> delimiter //

mysql> prepare stmt from 'select * from stuinfo where stuage>? and stusex=?' //
mysql> set @age=20;
    -> set @sex='男';
    -> execute stmt using @age,@sex //

1、位置占位符

<?php
/*
pdo预处理   位置占位符
*/
$dsn='mysql:host=localhost;port=3306;dbname=datanews;charset=utf8'; 
$pdo=new PDO($dsn,'root','123456');

$sql="insert into bank values(?,?)";
$stmt=$pdo->prepare($sql);
$cards=[
	['1003',500],
	['1004',400]
];
foreach($cards as $card){
	//绑定参数,并执行预处理
	 //方法一:只能放变量
	/*
	$stmt->bindParam(1,$card[0]);//占位符的位置从1开始
	$stmt->bindParam(2,$card[1]);
	$stmt->execute();
     */
     //方法二可以放值
	/*
	$stmt->bindValue(1,$card[0]);
    $stmt->bindValue(2,$card[1]);
	$stmt->execute();
    */
	//方法三     如果占位符的顺序和数组的顺序一致,可以直接传递数组
	$stmt->execute($card);
}

2、参数占位符

<?php
/*
pdo预处理  参数占位符
*/
$dsn='mysql:host=localhost;port=3306;dbname=datanews;charset=utf8'; 
$pdo=new PDO($dsn,'root','123456');

$sql="insert into bank values(:p1,:p2)";//:p1:p2是参数占位符
$stmt=$pdo->prepare($sql);
$cards=[
	['p1'=>'1005','p2'=>500],
	['p1'=>'1006','p2'=>400]
];
foreach($cards as $card){
	//绑定参数,并执行预处理
	 //方法一:只能放变量
	/*
	$stmt->bindParam('p1',$card['p1']);//占位符的位置从1开始
	$stmt->bindParam('p2',$card['p2']);
	$stmt->execute();
     */
     //方法二可以放值
	/*
	$stmt->bindValue('p1',$card['p1']);
    $stmt->bindValue('p2',$card['p2']);
	$stmt->execute();
    */
	//方法三     但数组的下标和参数名一致的时候就可以直接传递关联数组
	$stmt->execute($card);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值