<span style="font-size:18px;">一个:运行准备好的语句和绑定参数insert
try {
$pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
}catch(PDOException $e){
echo $e->getMessage();
}
/* pdo中有两种占位符号
*
* ? 參数 --- 索引数组。 按索引顺序使用
* 名字參数 ----关联数组。 按名称使用,和顺序无关
*/
$stmt=$pdo->prepare("insert into shops(name, price, num, desn) values(?, ?, ?, ?)"); //全部SQL都可运行
//准备好了一条语句。并入到server端,也已经编译过来了,就差为它分配数据过来
// $stmt=$pdo->prepare("insert into shops(name, price, num, desn) values(:name,:price, :num, :desn)");
//绑定名字參数 顺序能够不一致和名字相应就可以
/* $stmt->bindParam(":name", $name);
$stmt->bindParam(":num", $num);
$stmt->bindParam(":desn", $desn);
$stmt->bindParam(":price", $p);
*/
////绑定 问好?參数---得按顺序绑定
$stmt->bindParam(1, $name, PDO::PARAM_STR);//第3个參数是数据类型可不用写,会自己主动找类型
$stmt->bindParam(3, $num, PDO::PARAM_INT);
$stmt->bindParam(4, $desn, PDO::PARAM_STR);
$stmt->bindParam(2, $p, PDO::PARAM_STR);
$name="wwww1";
$num=101;
$desn="hello1";
$p=34.51;
if($stmt->execute()){
echo "运行成功";
echo "最后插入的ID:".$pdo->lastInsertId();
}else{
echo "运行失败!
";
}
//多次插入------------想运行多次。。
。
N次,传值就可以
$name="wwww1";
$num=101;
$desn="hello1";
$p=34.51;
if($stmt->execute()){
echo "运行成功";
echo "最后插入的ID:".$pdo->lastInsertId();
}else{
echo "运行失败!";
}
二:预处理语句UPDATE
try {
$pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
}catch(PDOException $e){
echo $e->getMessage();
}
/* pdo中有两种占位符号
*
* ? 參数 --- 索引数组, 按索引顺序使用
* 名字參数 ----关联数组。 按名称使用。和顺序无关
*/
//准备好了一条语句,并入到server端,也已经编译过来了。就差为它分配数据过来
//$stmt=$pdo->prepare("insert into shops(name, price, num, desn) values(?, ?, ?, ?
)"); //全部SQL都可运行
//update和insert一样
$stmt=$pdo->prepare("update shop set name=:name,num=:num,price=:price,desn=:desn where id=:id"); //全部SQL都可运行
//绑定名字參数 顺序能够不一致和名字相应就可以
$stmt->bindParam(":name", $name);
$stmt->bindParam(":num", $num);
$stmt->bindParam(":desn", $desn);
$stmt->bindParam(":price", $p);//变量名字随便写
$stmt->bindParam(":id", $id);
$name="nnn";
$num=101;
$desn="hello1";
$p=34.51;
$id=108;
if($stmt->execute()){
echo "运行成功";
//echo "最后插入的ID:".$pdo->lastInsertId();
}else{
echo "运行失败!
";
}
//接着传值运行第二次-----N次,这就是PDO预处理,仅仅会编译一次SQL,其它想运行传值就能够
$name="mmm";
$num=101;
$desn="hello1";
$p=34.51;
$id=109;
if($stmt->execute()){
echo "运行成功";
}else{
echo "运行失败。";
}
三:预处理插入多条
try {
$pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
}catch(PDOException $e){
echo $e->getMessage();
}
/* pdo中有两种占位符号
*
* ? 參数 --- 索引数组。 按索引顺序使用
* 名子參数 ----关联数组, 按名称使用,和顺序无关
*/
$stmt=$pdo->prepare("insert into shops(name, price, num, desn) values(?, ?
, ?, ?)"); //全部SQL都可运行--syi===
//准备好了一条语句,并入到server端。也已经编译过来了。就差为它分配数据过来
// $stmt=$pdo->prepare("insert into shops(name, price, num, desn) values(:name,:price, :num, :desn)");
//绑定參数
/* $stmt->bindParam(":name", $name);
$stmt->bindParam(":num", $num);
$stmt->bindParam(":desn", $desn);
$stmt->bindParam(":price", $p);
*/
//绑定參数
$stmt->bindParam(1, $name, PDO::PARAM_STR);
$stmt->bindParam(3, $num, PDO::PARAM_INT);
$stmt->bindParam(4, $desn, PDO::PARAM_STR);
$stmt->bindParam(2, $p, PDO::PARAM_STR);
$name="wwww1";
$num=101;
$desn="hello1";
$p=34.51;
if($stmt->execute()){
echo "运行成功";
echo "最后插入的ID:".$pdo->lastInsertId();
}else{
echo "运行失败!";
}
$name="ooo";
$num=101;
$desn="hello1";
$p=34.51;
if($stmt->execute()){
echo "运行成功";
echo "最后插入的ID:".$pdo->lastInsertId();
}else{
echo "运行失败!";
}
四:不绑定參数。直接execute中带值运行sql
try {
$pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
}catch(PDOException $e){
echo $e->getMessage();
}
/* pdo中有两种占位符号
*
* ?
參数 --- 索引数组, 按索引顺序使用
* 名子參数 ----关联数组, 按名称使用。和顺序无关
*/
//准备好了一条语句,并入到server端,也已经编译过来了,就差为它分配数据过来
$stmt=$pdo->prepare("insert into shops(name, price, num, desn) values(:name,:price, :num, :desn)");
// $stmt->execute($_POST);
//传值是能够不按顺序--这是名字參数
$stmt->execute(array(":price"=>99, ":name"=>"kkk1", ":num"=>"451", ":desn"=>"aaaaaa1"));
$stmt->execute(array(":price"=>88, ":name"=>"kkk2", ":num"=>"452", ":desn"=>"aaaaaa2"));
$stmt->execute(array(":price"=>77, ":name"=>"kkk3", ":num"=>"453", ":desn"=>"aaaaaa3"));
五:获取结果集
try {
$pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
}catch(PDOException $e){
echo $e->getMessage();
}
//获取结果 fetch()取一条--返回的是关联和索引数组一起返回
//获取结果 fetchAll(); 得到得是二维数组
$stmt=$pdo->prepare("select id, name, price, num, desn from shops where id > :id order by id");
$stmt->execute(array(":id"=>100)); //假设预SQL没有參数时,execute也不用带參数 直接问运行就能够
$stmt->setFetchMode(PDO::FETCH_ASSOC);//设置全部的获取模式,全部是关联数组,以下就不用改啦,也能够卸载fetch里面(PDO::FETCH_ASSOC),不写就是默认的类型关联和索引都返回
/*
while($row=$stmt->fetch()){//获取全部查出来的值 循环
print_r($row);
echo '<br>';
}
*/
/*
$row=$stmt->fetch(PDO::FETCH_ASSOC);获取关联数组
$row=$stmt->fetch(PDO::FETCH_NUM); 获取索引数组
$row=$stmt->fetch(PDO::FETCH_BOTH); 关联和索引都返回--默认就是这个
print_r($row);
*/
$data=$stmt->fetchAll(PDO::FETCH_ASSOC); //同上,也能够直接$stmt->setFetchMode(PDO::FETCH_ASSOC);这么设置
echo '<pre>';
print_r($data);
echo '</pre>';</span>