1.pdo连接数据库(初始化):
$pdo=new PDO("mysql:host=localhost;dbname=库名","用户名","密码");
2.执行增删改:
$res=$pdo->exec("增删改的操作语句");
返回的是影响条数,如果没影响返回0
$id=$pdo->lastInsertId();
获取最后一条插入的id
3.执行查询
$obj=$pdo->query("select * from A");
遍历该$obj对象可获取数据
4.预处理
$pdoStm=$pdo->prepare($sql);
$res=$obj->execute(); //返回bool
$pdoStm->fetch(PDO::FETCH_ASSOC); //获取查询结果中的一行,要配合while
$pdoStm->fetchAll(PDO::FETCH_ASSOC); //获取所有数据,是个二维数组
$pdoStm->setFetchMode(PDO::FETCH_ASSOC); //设置获取数据的形式是关联数组
5.占位符的使用
a.
$sql="select * from user where name=:name and password=:password"; //占位符不用加引号
$pdoStm=$pdo->prepare($sql);
$pdo->execute([':name'=>xxx,':password'=>xxx]);
另一种形式的占位符
使用占位符可以解决sql注入的问题
$sql="select * from user where name=? and password=?";
$pdoStm=$pdo->prepare($sql);
$pdo->execute([xxx,xxx]);
b.使用bindParam()方法绑定参数到占位符
$sql="insert into user values (null,:name,:password);
$pdoStm=$pdo->prepare($sql);
$pdoStm->bindParam(":name",$name,PDO::PARAM_STR);
$pdoStm->bindParam(":password",$password,PDO::PARAM_STR);
$name="aaa";
$password="bb";
$pdoStm->execute();
//如果还想插入一条数据
$user="xxx";
$password="mm";
$pdoStm->execute();
使用?占位则$pdoStm->bindParam(1,$user);$pdoStm->bindParam(2,$password);
bindValue()用法和bindParam()一样,区别是后者是引用传值,传给占位符的值必须是变量不能是值
而bindValue()可以是值,它不是引用传值的机制
$pdoStm->bindParam(":name","zbp"); 是错的
6.错误信息
$pdo->errorInfo()
或者
$pdoStm->errorInfo()
返回的是一个索引数组,第一个元素是错误码,00000表示没有错误;第二个元素是错误信息
最后贴出来一个自定义的PDO类: