php mysql pdo 防注入_PHP连接数据库MySQL代码:Mysqli与PDO防注入(转)

今天主要是来分享PHP编程语言如何用PDO和Mysqli连接数据库?以及增、删、改、查。关于现在为什么都流行用PDO与Mysqli?这里我就不多讲了,主要是防止SQL注入、不同数据库类型的兼容性。具体操作如下:

一、Mysqli

主要讲的是Mysqli的增、删、改、查,这里所讲的增、删、改、查语句都是防注入的。可能有很多人的SQL语句只有查询是防注入的,其它并没有做任何的防注入。因为有时候网站的功能是允许“注册用户”做增、删、改、查的,不做防注入是不行的。

1、Mysqli 连接数据库

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

$password= 'root'; //密码

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

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

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

2、Mysqli 插入(增加)数据

$catname= 'www.fujieace.com';$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

}

3、Mysqli 修改数据

$catname= 'https://www.fujieace.com';$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 '修改成功!';

}

4、Mysqli 删除数据

$catid= 68;//mysqli删除

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

}

5、Mysqli 查询一条数据

$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;

}

6、Mysqli 查询多条数据

$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;

}

二、PDO

这里我就不多讲了,作用及原理同上。主要是讲关于:PDO连接数据库以及相应的增、删、改、查。

用PDO你只需要记住以下个步骤保证你不会出错:

1:连接数据库

2:设置字符集

3:准备SQL语句

4:替换SQL语句

5:发送SQL语句

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

1、PDO 连接数据库

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

$password = 'root' ; //密码

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

2、PDO 插入(增加)数据

$catname= 'www.fujieace.com';$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

}

3、PDO 修改数据

$catname= '付杰';$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 '修改成功!';

}

4、PDO 删除数据

$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 '删除成功!';

}

5、PDO 查询数据(一条或多条)

$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......*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值