PHP 认识PDO数据库抽象层,phppdo数据库抽象
PDO全称是PHP Data Object(PHP数据对象),是PHP连接数据库中的一个扩展,目前得到普遍使用。PDO主要解决的问题是为不同的数据库提供一个统一的数据访问接口和操作层。为实现系统在跨数据库平台的开发及迁移等问题上提供了较好的解决方案。PDO 对象的获取
在PDO中,要建立与数据库的连接需要实例化PDO的构造函数。PDO构造函数语法如下:
PDO::__construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] )
通过PDO构造函数来连接数据库:
<span> 1</span> <?<span>php </span><span> 2</span> <span>$dbms</span> = 'mysql'<span>; </span><span> 3</span> <span>$dbName</span> = 'dormitory'<span>; </span><span> 4</span> <span>$host</span> = 'localhost'<span>; </span><span> 5</span> <span>$user</span> = 'root'<span>; </span><span> 6</span> <span>$pwd</span> = ''<span>; </span><span> 7</span> <span>$dsn</span> = "<span>$dbms</span>:host=<span>$host</span>;dbname=<span>$dbName</span>"<span>; </span><span> 8</span> <span>try</span><span> { </span><span> 9</span> <span>$pdo</span> = <span>new</span> PDO(<span>$dsn</span>, <span>$user</span>, <span>$pwd</span><span>); </span><span>10</span> <span>echo</span> '连接成功!'<span>; </span><span>11</span> } <span>catch</span> (<span>Exception</span> <span>$e</span><span>) { </span><span>12</span> <span>echo</span> <span>$e</span>->getMessage() . "<br>"<span>; </span><span>13</span> <span>} </span><span>14</span> ?>
3种方法执行sql语句
执行sql语句的方法有:exec(),query(),prepare()+execute()。
1、exec()方法用于执行input,delete,update语句,返回值为受影响的行数;
2、query()方法用于执行select语句,返回值为一个二位数组;
3、预处理语句prepare()+execute(),可以用于执行input,delete,update,select语句,
可以把预处理语句看成想要运行的SQL的一种编译过的模板,他可以使用变量参数进行定制,做到查询时只需解析一次就可以执行多次;
如果应用程序只使用预处理语句,可以确保不会发生SQL注入。
PDO::prepare()返回值为一个PDOStatement对象,对象的内容为prepare()方法里面的参数;
PDO::execute(),检查sql是否可执行,返回值为一个boolean类型。
从预处理语句的返回值也可以看出,他并没有真正的执行sql语句,而是检查sql的正确性,准备好执行的状态,等到需要用到结果集的时候再执行。
<span> 1</span> <?<span>php </span><span> 2</span> <span>include_once</span> './pdo_db_conn.php'<span>; </span><span> 3</span> <span>try</span><span> { </span><span> 4</span> <span>$query</span> = "select * from building"<span>; </span><span> 5</span> <span>//</span><span> $result = $pdo->query($query);//结果为一个二维数组</span> <span> 6</span> <span>$result</span> = <span>$pdo</span>->prepare(<span>$query</span><span>); </span><span> 7</span> <span>var_dump</span>(<span>$result</span><span>); </span><span> 8</span> <span>$flag</span> = <span>$result</span>-><span>execute(); </span><span> 9</span> <span>var_dump</span>(<span>$flag</span><span>); </span><span>10</span> } <span>catch</span> (<span>Exception</span> <span>$e</span><span>) { </span><span>11</span> <span>echo</span> <span>$e</span>-><span>getMessage(); </span><span>12</span> <span> } </span><span>13</span> ?>
返回值:
object(PDOStatement)[2]
public 'queryString' => string 'select * from building' (length=22)
boolean true
3种方法获取结果集
获取结果集的方法有fetch(),fetchAll(),fetchColumn();
fetch()方法获取结果集中的下一行,是一个数组;
fetchAll()方法获取结果集中的所有行,是一个数组;
fetchColumn()方法获取结果集中下一行指定的列的值。
三个方法的调用对象类型为PDOStatement对象类型,一般是在预处理语句之后执行
3种方法捕获sql语句中的错误的方式
当执行sql语句出现错误是,可以根据设置的错误提示方式,来决定显示错误的方法。
错误提示方式有:
1、PDO::ERRMODE_SILENT
默认方式,出现错误时程序继续执行,无错误提示。
2、PDO::ERRMODE_WARNING
出现错误时会继续执行,错误的部分会提示警告信息。
3、PDO::ERRMODE_EXCEPTION
出现错误时不会继续执行,错误的部分会提示异常信息。
2种方法获取程序错误信息
当执行sql语句出现错误是(访问数据库部分,对结果集的遍历错误不会提示),可以通过errorCode(),errorInfo()两个方法在后台输出错误信息,当sql语句是通过预编译执行的,这两个方法不适用。当在程序中调用errorCode()方法后,返回值为00000(5个0)时,表示程序没有错误,但返回其他5个字符时,表示程序是有错误的,这时可以通过调用errorInfo()方法来查看具体错误的信息。
这个跟PHP的版本有一点点关系的。比如,PHP5.2要开启php_pdo.dll和php_pdo_mysql.dll两个,php5.4则只需要开启php_pdo_mysql.dll这一个就行了
$s_sql = select username,password from t_table where username=? and password=?;
$sth = $dbh->prepare($s_sql);
$result = $sth->execute(array($username,$password));
$result = $sth->fetchAll();//如果不存在返回的是空的数组,如果存在就是用户名+密码

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
