修改php配置文件php.ini代码如下:
extension=php_pdo_mysql.dll //获取Apache、MySQL、PHP、GD等配置信息 phpinfo();例子代码:
<?php //声明页面字符集 header("content-type:text/html;charset:utf-8"); //数据库的配置信息 $dsn="mysql:host=127.0.0.1;port=3306;dbname=itcast;charset=utf8"; $username="root"; //$password="root"; //创建PDO对象 $pdo=new PDO($dsn,$username); var_dump($pdo);例子代码:
<?php //声明页面字符集 header("content-type:text/html;charset:utf-8"); //(1)数据库的配置信息 $dsn="mysql:host=127.0.0.1;port=3306;dbname=itcast;charset=utf8"; $username="root"; //$password="root"; //(2)创建PDO对象 $pdo=new PDO($dsn,$username); //(3)插入一条记录 $sql="INSERT INTO student VALUES(null,"小明","男",24)"; $records=$pdo->exec($sql); echo "共插入{$records}条记录";代码例子:
<?php //声明页面字符集 header("content-type:text/html;charset:utf-8"); //(1)数据库的配置信息 $dsn="mysql:host=127.0.0.1;port=3306;dbname=itcast;charset=utf8"; $username="root"; //$password="root"; //(2)创建PDO对象 $pdo=new PDO($dsn,$username); //(3)查询数据并返回结果集对象 $sql="SELECT * FROM student"; $PDOstatement=$pdo->query($sql); //(4)遍历对象 foreach ($PDOstatement as $arr) { print_r($arr); }代码例子:
<?php //声明页面字符集 header("content-type:text/html;charset:utf-8"); //(1)数据库的配置信息 $dsn="mysql:host=127.0.0.1;port=3306;dbname=itcast;charset=utf8"; $username="root"; //$password="root"; //(2)创建PDO对象 $pdo=new PDO($dsn,$username); //(3)插入一条记录 $sql="INSERT INTO student VALUES(null,"小明","男",24)"; $pdo->exec($sql); //(4)获取插入的记录的ID值 echo "id=".$pdo->lastInsertId()."记录插入成功";代码例子:
<?php //声明页面字符集 header("content-type:text/html;charset:utf-8"); //(1)数据库的配置信息 $dsn="mysql:host=127.0.0.1;port=3306;dbname=itcast;charset=utf8"; $username="root"; //$password="root"; //(2)创建PDO对象 $pdo=new PDO($dsn,$username); //设置默认的提取数据的模式 $pdo->setAttribute(PDO::ATTR_DEFALT_FETCH_MODE,PDO::FETCH_ASSOC) //(3)插入一条记录 $sql="INSERT INTO student VALUES(null,"小明","男",24)"; $pdo->exec($sql); //(4)获取插入的记录的ID值 echo "id=".$pdo->lastInsertId()."记录插入成功";代码例子:
<?php //声明页面字符集 header("content-type:text/html;charset:utf-8"); //(1)数据库的配置信息 $dsn="mysql:host=127.0.0.1;port=3306;dbname=itcast;charset=utf8"; $username="root"; //$password="root"; //(2)创建PDO对象 $pdo=new PDO($dsn,$username); //(3)查询数据,并返回结果集对象 $sql="SELECT * FROM student WHERE id=48"; $PDOStatement=$pdo->query($sql); //(4)从结果集获取一条记录 $arr=$PDOStatement->fetch(PDO::FETCH_ASSOC); print_r($arr);例子代码:
<?php //声明页面字符集 header("content-type:text/html;charset:utf-8"); //(1)数据库的配置信息 $dsn="mysql:host=127.0.0.1;port=3306;dbname=itcast;charset=utf8"; $username="root"; //$password="root"; //(2)创建PDO对象 $pdo=new PDO($dsn,$username); //(3)查询数据,并返回结果集对象 $sql="SELECT * FROM student"; $PDOStatement=$pdo->query($sql); //(4)从结果集获取一条记录 $arrs=$PDOStatement->fetchAll(PDO::FETCH_ASSOC); print_r($arrs);代码例子:
<?php //声明页面字符集 header("content-type:text/html;charset:utf-8"); //(1)数据库的配置信息 $dsn="mysql:host=127.0.0.1;port=3306;dbname=itcast;charset=utf8"; $username="root"; //$password="root"; //(2)创建PDO对象 $pdo=new PDO($dsn,$username); //(3)查询数据,并返回结果集对象 $sql="SELECT count(id) FROM student"; $PDOStatement=$pdo->query($sql); //(4)从结果集获取某个列的值 $records=$PDOStatement->fetchColumn(0); echo "共有{$records}条记录";例子代码:
<?php //声明页面字符集 header("content-type:text/html;charset:utf-8"); //(1)数据库的配置信息 $dsn="mysql:host=127.0.0.1;port=3306;dbname=itcast;charset=utf8"; $username="root"; //$password="root"; //(2)创建PDO对象 $pdo=new PDO($dsn,$username); //(3)查询数据,并返回结果集对象 $sql="SELECT * FROM student"; $PDOStatement=$pdo->query($sql); //(4)从结果集获取记录数 $records=$PDOStatement->rowCount(); echo "共有{$records}条记录";PDO错误报告模式:静默模式、警告模式、异常模式。
静默模式(silent):当PDO执行SQL语句有错时,不显示任何错误(默认);警告模式(warming):当PDO执行SQL语句有错时,用错误 的等级来报告信息;异常模式(exception):当PDO执行SQL语句有错时,先抛出异常,再捕获异常。获取错误信息函数PDO::errorCode()和POD::errorInfo()
PDO::errorCode():获取错误状态码。如果状态码为“00000”,说明没有错。POD::errorInfo()获取描述性信息。例子代码:
<?php //声明页面字符集 header("content-type:text/html;charset:utf-8"); //(1)数据库的配置信息 $dsn="mysql:host=127.0.0.1;port=3306;dbname=itcast;charset=utf8"; $username="root"; //$password="root"; //(2)创建PDO对象 $pdo=new PDO($dsn,$username); //(3)查询数据,并返回结果集对象 $sql="SELECT * FROM student WHERE id=abc"; $PDOStatement=$pdo->query($sql); //(4)输出错误信息 echo "错误状态码".$PDOStatement->errorCode(); echo "<br>错误信息:"; print_r($PDOStatement->errorInfo());要想报告“警告模式错误”,必须先设置错误的报告模式。
例子代码:
<?php //声明页面字符集 header("content-type:text/html;charset:utf-8"); //(1)数据库的配置信息 $dsn="mysql:host=127.0.0.1;port=3306;dbname=itcast;charset=utf8"; $username="root"; //$password="root"; //(2)创建PDO对象 $pdo=new PDO($dsn,$username); //设置PDO的报错模式为:警告模式 $pod->setAttribute(PDO::ATTR_ERRMODE,POD::ERRMODE_WARMING); //(3)查询数据,并返回结果集对象 $sql="SELECT * FROM student WHERE id=abc"; $PDOStatement=$pdo->query($sql);要想报告“异常模式错误”,必须先设置错误的报告模式。
例子代码:
<?php //声明页面字符集 header("content-type:text/html;charset:utf-8"); //(1)数据库的配置信息 $dsn="mysql:host=127.0.0.1;port=3306;dbname=itcast;charset=utf8"; $username="root"; //$password="root"; //(2)创建PDO对象 $pdo=new PDO($dsn,$username); //设置PDO的报错模式为:警告模式 $pod->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); //(3)查询数据,并返回结果集对象 try{ //师徒正常运行的程序代码 $sql="SELECT * FROM student WHERE id=abc"; $PDOStatement=$pdo->query($sql); }catch(PDOException $e){ echo "错误行号:".$e->getLine(); echo "<br>错误文件:".$e->getFile(); echo "<br>错误状态码:".$e->getCode(); echo "<br>错误描述信息".$e->getMessage(); }SQL语句的执行,分成两个阶段:编译和执行。
如果SQL语句是第一次执行,先编译再执行。编译过程十分复杂,耗用系统资源,相对不太安全;如果SQL语句(即相同的SQL语句)是第2次执行,直接从缓存中读取,无疑执行效率是最高的,也是比较安全的,可以有效避免SQL注入等安全问题;