PDO操作数据库
来源:互联网 发布:电子表格怎么合计数据 编辑:程序博客网 时间:2024/06/09 14:20
1、新建PDO对象链接数据库,执行exec(),lastInsertId()方法
<?phptry{ $dsn="mysql:host=localhost;dbname=phpdemo"; $username="root"; $pswd="1234"; //连接数据库,新建PDO对象 $pdo=new PDO($dsn,$username,$pswd); //使用exec方法执行数据库操作并返回受影响的行数,若无,返回0,执行错误返回boolean false //exec方法不能执行select语句 $sql=<<< EOF insert staff(name,sex,job) values('洪七公','男','丐帮帮主'), ('杨过','男','独臂大侠'),('小龙女','女','古墓派弟子')EOF; $res=$pdo->exec($sql); echo "受影响行数:".$res; //$pdo->lastInsertId()方法返回最后插入的ID号 echo "最后插入id为".$pdo->lastInsertId();}catch (PDOException $e){ echo $e->getMessage();}
结果如下:
2、显示错误信息:errorCode(),errorInfo()
$sql="insert staff(name,sex,jobs) values('洪七公','男','丐帮帮主')"; $res=$pdo->exec($sql); if(false==$res){ echo "错误编号:".$pdo->errorCode(); echo "<pre>"; print_r($pdo->errorInfo()); echo "</pre>"; }
在上面我把job错写为jobs,运行结果如下:
3、通过query()方法查询操作
$sql="select * from staff"; $stmt=$pdo->query($sql); var_dump($stmt); //执行query()方法返回一个statement对象,失败返回false,可以通过数组遍历该对象 foreach ($stmt as $row){ echo "<pre>"; print_r($row); echo "</pre>"; //通过关键字访问数组 echo "姓名:".$row["name"]; }
结果如下:
或者将结果储存在一个数组中,以后访问
foreach ($stmt as $row){ $res[]=$row; } echo "姓名:".$res[1]["name"];
4、通过statement对象执行查询
$sql="select * from staff"; //PDO的prepare方法准备sql语句,返回statement对象 $stmt=$pdo->prepare($sql); //statement对象执行 $stmt->execute(); //stmt的fetch方法从结果集中取出一条记录 $row=$stmt->fetch(); print_r($row);
其中将fetch()改为fetchall()方法可以获取所有记录。两种方法都可以对返回数组是关联、数字或者两者进行设置:$res=$stmt->fetchAll(PDO::FETCH_ASSOC),数字为PDO::FETCH_NUM,默认为两者都返回。
还可以通过PDO::FETCH_BOUND将返回列绑定到变量:
$sql="select username,sex,job from login"; $stmt=$pdo->prepare($sql); $stmt->execute(); //将返回的列与变量绑定,列序号为返回列的顺序 $stmt->bindColumn(1,$username); $stmt->bindColumn(2,$sex); $stmt->bindColumn(3,$job); //设置fetch的参数PDO::BOUND while($stmt->fetch(PDO::FETCH_BOUND)){ echo "姓名:$username,性别:$sex,职位:$job<br>"; }
fetchColumn()方法返回一行中的指定列,由于返回后指针向下移动,无法再继续返回同一行中的其他列数据。
statement的debugDumpParams()方法打印执行的sql语句:
$sql="insert login(username,password,mail) values(?,?,?)";$stmt=$pdo->prepare($sql);$username='测试';$password="ceshi";$stmt->bindParam(1,$username);$stmt->bindParam(2,$password);$stmt->bindValue(3,'default@qq.com');$stmt->debugDumpParams();
结果如下:
statement的nextRowset()方法可以在返回多个结果集时,切换下一个结果集:
$sql="select username,sex,job from login;//分号分割多个sql语句 select * FROM staff;"; $res=$pdo->query($sql); //将返回的列与变量绑定,列序号为返回列的顺序 $row=$res->fetchAll(); print_r($row); echo "<hr>"; //切换下一个结果集 $res->nextRowset(); $row=$res->fetchAll(); print_r($row);
0 0
- pdo 数据库操作
- pdo 连接操作数据库
- 【PDO对象操作数据库】
- PHP操作数据库PDO
- PDO 数据库相关操作
- PDO数据库操作
- pdo数据库操作类
- pdo 数据库操作类
- PDO操作数据库
- php操作数据库PDO
- PDO数据库操作封装类
- 数据库PDO操作基类
- PDO及预处理操作数据库
- PDO操作数据库的方法
- PDO连接与操作数据库
- sqlite和pdo mysql的数据库操作
- PDO数据库操作类 详细说明
- 基于PDO的mysql数据库操作类
- 数码管循环左移
- 获取字符串的像素长度
- 微信公众号开发------长链接转短链接接口
- Spring Boot学习总结(6)——SpringBoot解决ajax跨域请求问题的配置
- unity game界面和发布之后运行鼠标显示异常
- PDO操作数据库
- Linux查看CPU信息[//proc/loadavg]
- git合并commit方法
- android从入门到精通sl(实例源程序)
- hadoop中4种压缩格式的特征的比较
- CentOS6.5下二进制安装mysql-5.6.27
- 免费ARP(gratuitous ARP)
- tableview 去掉分割线线和右侧滚动条
- LK top lk_main处理