我们在使用PDO去执行sql语句的时候并不会报错.如下案例所示:

<?php
try {
  //$pdo = new pdo("mysql:host=主机;port=端口;dbname=数据库","数据库名","密码");
$pdo = new pdo("mysql:host=localhost;port=3306;dbname=test","root","");
} catch (PDOException $e) {
echo $e->getmessage();
}
echo $pdo->exec("insert into aaaa values(aaa)");//此处sql语句故意写错。
?>

但返回的结果是一篇空白,也就是说sql语句执行错误了我们并不知道,这样是不行的,极大的影响了工作。那么这时候我们就需要自己写一个错误让他来报错。

我们需要借助$pdo->errorcode以及$pdo->errorinfo

<?php
try{
$pdo = new pdo("mysql:host=localhost;port=3306;dbname=test","root","");
}catch(PDOException $e){
echo $e->getmessage();
}
echo "PDO对象创建成功.<br />";
$sql = $pdo -> exec("insert inssssto users(gold,user,password) values(7,'hello','world')");
if(!$sql){
echo $pdo->errorcode();
echo "<br />";
print_r($pdo->errorinfo());
exit;
}
echo "sql语句执行成功。";
?>

显示效果如下图所示:

sql语句刻意写错了的。当然了我们也可以使用try catch

<?php
try{
$pdo = new pdo("mysql:host=localhost;port=3306;dbname=test","root","");
}catch(PDOException $e){
echo $e->getmessage();
}
echo "PDO对象创建成功.<br />";
$sql = $pdo -> exec("insert inssssto users(gold,user,password) values(7,'hello','world')");
if(!$sql){
echo $pdo->errorcode();
echo "<br />";
print_r($pdo->errorinfo());
exit;
}
echo "sql语句执行成功。"; ?>

demo


PDO执行sql语句:

 其实上面的案例当中已经涉及,就是exec,但还有一个为:query。

二者的差异:

    Exec用来处理非结果集的  比如insert update create等 且该还返回影响行数.

    Query 用来处理结果集的  比如select desc show等.

但其实这两种都不是常用的语句。因为还有比query和exec更好的。详情可看:http://www.cnblogs.com/xishaonian/p/6428744.html

跟着百度学PHP[14]-PDO的错误处理模式&PDO执行SQL的更多相关文章

  1. 跟着百度学PHP[14]-PDO之Mysql的事务处理2

    前面所将仅仅是在纯mysql下的讲解,这节就是要将其搬到PDO台面上来了. 将自动提交关闭. SetAttribute下有一个PDO::ATTR_AUTOCOMMIT 将其设置为0即可关闭,如:$pd ...

  2. 跟着百度学PHP[14]-初识PDO数据库抽象层

    目录: 00x1 php中的pdo是什么? 00x2 pdo创建一个PDO对象 00x1 php中的pdo是什么? 就是操作数据库的方法,pdo就是把操作数据库的函数封装成一个pdo类,其间做了安全验 ...

  3. 跟着百度学PHP[14]-PDO的预处理语句1

    预处理语句有以下两个特点: 1.效率高 2.安全性好 为什么说预处理语句效率高呢? 预处理语句就好比一个模板,比如下面的一串插入语句: insert into admin(id,username,pa ...

  4. 跟着百度学PHP[14]-COOKIE的应用/网站登陆案例完整案例

    先在数据库当中创建以下数据: mysql> create table user( -> id int not null auto_increment, ) not null default ...

  5. 跟着百度学PHP[14]-PDO-优化驱动

    使用方法设置预定义变量 PDO的方法/属性 PDO::beginTransaction — Initiates a transaction PDO::commit — Commits a transa ...

  6. 跟着百度学PHP[14]-PDO的预处理语句2

    在$sql = $pdo -> prepare("insert into users(gold,user,password) values(?,?,?)"):条语句我们不仅仅 ...

  7. 跟着百度学PHP[14]-PDO之Mysql的事务处理1

    事务处理:在实际案例当中干一件事的mysql语句(好比转账,小一同学转账100,小二同学收账,在mysql当中小一就要减去转账的钱,小二就要增加100快)倘若该语句执行过程中有任何一条的sql语句出错 ...

  8. PHP PDO的错误处理模式

    PDO默认的错误处理方式是返回一个数组格式的错误代码.如果想要判断SQL有没有出错时,就需要写一组代码来检测这个返回的数组.觉得这样有些麻烦.还好PDO还提供了另外两种处理方式,只要根据需要设置一下就 ...

  9. 跟着百度学PHP[17]-复习PDO的几个关键词

    主要就是复习一下几个关键词.发现太久没有写又忘了.惭愧. final self static const

随机推荐

  1. 推送代码分支时出现:fatal: 'origin' does not appear to be a git repository

    关于ubuntu进行提交本地分支到远程库出现问题: 解决方案: 执行如下命令: git remote add origin git@github.com:yourusername/test.git y ...

  2. Item 33: 避免覆盖(hiding)“通过继承得到的名字”

    莎士比亚有一个关于名字的说法."What's in a name?" 他问道,"A rose by any other name would smell as sweet ...

  3. c/c++的|、||、&、&&、异或、~、!运算

    位运算     位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果. 位运算符有:     &(按位与).|(按位或) ...

  4. sparkStreaming读取kafka的两种方式

    概述 Spark Streaming 支持多种实时输入源数据的读取,其中包括Kafka.flume.socket流等等.除了Kafka以外的实时输入源,由于我们的业务场景没有涉及,在此将不会讨论.本篇 ...

  5. PHP Variable Scope

    原文: https://phppot.com/php/variable-scope-in-php/ Last modified on March 24th, 2017 by Vincy. ------ ...

  6. vim 命令的使用

    稍微再研究一下vim的命令使用. ----------------------------------------------------------------------------------- ...

  7. Window下使用Xshell连接VirtualBox中CentOS SSH最佳实践

    网上已经有非常多讲怎样连接VMware的文章.可是针对一些可能遇到的细节没有讲全. 这里会有一个非常 实际的样例,附带全部软件的链接,保证成功. 最佳实践什么的都是骗人的. 1.安装VirtualBo ...

  8. [React + Functional Programming ADT] Create Redux Middleware to Dispatch Multiple Actions

    We only have a few dispatching functions that need to be known by our React Application. Each one ac ...

  9. 复制VirtualBox中的虚拟机

    假设简单的复制虚拟机是行不通的.复制过程须要一个小技巧,复制出来的VDI文件无法在虚拟介质管理器中注冊.由于每一个VDI文件都有一个唯一的uuid.而VirtualBox不同意注冊反复的uuid. 为 ...

  10. mac 查看目前哪些进程占用哪些端口

    lsof -nP  | grep TCP | grep LISTEN lsof -i :TCP