pdo mysql mysqli教程_PHP(Mysqli和PDO)预处理

PHP预处理主要是用来防SQL注入的,开发程序的都明白这样一个道理,不能相信用户的任何输入,如果用户输入问题你没有做相应的安全,

那么:你的程序是很危险的,很容易被攻击的!预处理:只分析两个:mysqli和PDO,因为这两个是PHP开发者用得比较多的;

mysql 在PHP 高版本里边已经不支持了。

一、Mysqli预处理防SQL注入

博主讲解了mysqli预处理的全部,包含增、删、改、查的预处理,不过:一般用不上这么多。主要是插入数据做好预处理即可!其它的是否做预处理要根据你的场景来;

$user='root'; //用户名

$password='root'; //密码

$database='test'; //数据库

$mysqli = new mysqli ( $serveraddress , $user , $password , $database);if ( mysqli_connect_errno()) {printf ( "Connect failed: %s\n" , mysqli_connect_error());exit();

}$mysqli->set_charset( "utf8" ); //设置字符集

$catname='test';$parentid=12;//mysqli插入

$sql='insert into cat (cat_name,parent_id) values(?,?)';$stmt=$mysqli->prepare($sql);$stmt->bind_param('si',$catname,$parentid);/*i 整型integer

d 双精度浮点型double

s 字符串string

b 是一个blob和将发送数据包*/

$stmt->execute();if($id=$stmt->insert_id){echo $id; //得到插入返回的ID

}$catname='test';$catid=66;//mysqli修改

$sql='update cat set cat_name=? where cat_id=?';$stmt=$mysqli->prepare($sql);$stmt->bind_param('si',$catname,$catid);if($stmt->execute()){echo '修改成功!';

}$catid=68;//mysqli删除

$sql='delete from cat where cat_id=?';$stmt=$mysqli->prepare($sql);$stmt->bind_param('i',$catid);if($stmt->execute()){echo '删除成功!!';

}$catid=10;//mysqli查询多行

$sql='select cat_name,parent_id from cat where cat_id';$stmt=$mysqli->prepare($sql);$stmt->bind_param('i',$catid);$stmt->execute();$stmt -> bind_result ( $name , $code );//这里参数跟你查询的字段显示个数需要对应起来!

while ( $stmt ->fetch ()) {echo $name.'=>'.$code;

}$catid=12;//mysqli查询一行

$sql='select cat_name,parent_id from cat where cat_id=?';$stmt=$mysqli->prepare($sql);$stmt->bind_param('i',$catid);$stmt->execute();$stmt -> bind_result ( $name , $code);while ( $stmt ->fetch ()) {echo $name.'=>'.$code;

}

二、PDO预处理防SQL注入

PDO面向对象函数有很多,都可以综合运用的,以下是博客有了不同函数实现的效果,一定要明白函数的原理,有很多函数它的作用其实是一样的;你只需要记住几个步骤:

1:连接数据库

2:设置字符集

3:准备SQL语句

4:替换SQL语句

5:发送SQL语句

6:得到SQL结果,可以是值,可以是布尔型,也可以是对象,数组等;

同样,PDO博主也做了它的增、删、改、查,虽然说并不是完全有必要,但是总会有一些项目,它的这些都需要做预处理的;记住:永远不要相信用户的任何输入!

$user = 'root' ;//用户名

$password = 'root' ; //密码

$conn = new PDO ( $dsn , $user , $password);$conn->exec("set names utf8"); //设置字符集

$catname='test';$parentid=66;$sql='insert into cat (cat_name,parent_id) values(:catname,:parentid)';//PDO插入方法一

$sth=$conn->prepare($sql,array( PDO :: ATTR_CURSOR => PDO ::CURSOR_FWDONLY));$sth->execute(array(':catname'=>$catname,':parentid'=>$parentid));if($id=$conn->lastInsertId()){echo $id; //得到插入返回的ID

}//PDO插入方法二

$sth=$conn->prepare($sql);$sth -> bindParam ( ':catname' , $catname , PDO ::PARAM_STR );$sth -> bindParam ( ':parentid' , $parentid , PDO :: PARAM_INT , 12 );//参数标识,绑定的变量名,参数类型(选填),数据类型长度(选填)

$sth ->execute ();if($id=$conn->lastInsertId()){echo $id; //得到插入返回的ID

}$catname='test';$catid=88;//PDO修改

$sql='update cat set cat_name=? where cat_id=?';$sth=$conn->prepare($sql);$sth->bindParam(1, $catname);$sth->bindParam(2,$catid);if($sth->execute()){echo '修改成功!';

}$catid=91;//PDO删除

$sql='delete from cat where cat_id=:catid';$sth=$conn->prepare($sql);$sth->bindValue(':catid',$catid,PDO::PARAM_INT);if($sth->execute()){echo '删除成功!';

}$catid=10;//PDO查询多行

$sql='select cat_name,parent_id from cat where cat_id';$sth=$conn->prepare($sql);$sth->bindParam(1,$catid);$sth->execute();$result=$sth->fetchAll();//var_dump($result);

foreach ($result as $k => $v){echo $v['cat_name'].'=>'.$v['parent_id'];

}$catid=12;//PDO查询一行

$sql='select cat_name,parent_id from cat where cat_id=:catid';$sth=$conn->prepare($sql);$sth->bindParam(':catid',$catid);$sth->execute();$result=$sth->fetch(PDO::FETCH_ASSOC);var_dump($result);/*FETCH_ASSOC、FETCH_BOTH、FETCH_BOUND、FETCH_CLASS、FETCH_COLUMN、FETCH_FUNC、GROUP、INTO、KEY_PAIR、LAZY、NAMED、NUM、OBJ、ORI_ABS......*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值