当前位置: 首页 > news >正文

品牌网站设计案例网页制作基础教程例子ppt

品牌网站设计案例,网页制作基础教程例子ppt,外贸网站建设平台哪个好,wordpress网站刷新PDO(PHP Data Object) 是PHP 5新出来的东西#xff0c;在PHP 6都要出来的时候#xff0c;PHP 6只默认使用PDO来处理数据库#xff0c;将把所有的数据库扩展移到了PECL#xff0c;那么默认就是没有了我们喜爱的php_mysql.dll之类的了#xff0c;那怎么办捏#xff0c;我们…PDO(PHP Data Object) 是PHP 5新出来的东西在PHP 6都要出来的时候PHP 6只默认使用PDO来处理数据库将把所有的数据库扩展移到了PECL那么默认就是没有了我们喜爱的php_mysql.dll之类的了那怎么办捏我们只有与时俱进了我就小试了一把PDO。本文只是入门级的高手可以略过呵呵 【PDO是啥】 PDO是PHP 5新加入的一个重大功能因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理什么 php_mysql.dll、php_pgsql.dll、php_mssql.dll、php_sqlite.dll等等扩展来连接MySQL、PostgreSQL、MS SQL Server、SQLite同样的我们必须借助 ADOdb、PEAR::DB、PHPlib::DB之类的数据库抽象类来帮助我们无比烦琐和低效毕竟php代码的效率怎么能够我们直接用C/C写的扩展斜率高捏所以嘛PDO的出现是必然的大家要平静学习的心态去接受使用也许你会发现能够减少你不少功夫哦。 【安装PDO】 我是在Windows XP SP2 上面所以嘛整个过程都是在Windows行进行的啦至于Linux/FreeBSD 等平台请自行查找资料设置安装。 我的是PHP 5.1.4已经自带有了php_pdo.dll的扩展不过需要稍微设置一下才能使用。 打开 c:\windows\php.ini 那是我的PHP配置文件找到下面这行 extension_dir 这个就是我们扩展存在的目录我的PHP 5扩展是在C:\php5\ext那么我就把这行改成 extension_dir C:/php5/ext 然后再往php.ini下面找到 ;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; 下面有一堆类似 ;extensionphp_mbstring.dll 的东西这里就是PHP扩展加载的配置了我们再最后面添加上我们PDO的扩展 extensionphp_pdo.dll extensionphp_pdo_mysql.dll extensionphp_pdo_pgsql.dll extensionphp_pdo_sqlite.dll extensionphp_pdo_mssql.dll extensionphp_pdo_odbc.dll extensionphp_pdo_firebird.dll ;extensionphp_pdo_oci8.dll 各种PDO的驱动能给加上的全给加上不过后面的php_pdo_oci8.dll因为我没有安装Oralce数据库所以没有这个就使用分号注释掉它。然后重启我们的Web服务器, IIS/Apache我的是IIS嘿嘿表鄙视我在Windows上简单嘛。 重启后在我们Web服务器的文档目录下写一个phpinfo.php的文件加上这些 ? phpinfo(); ? 然后打开我们可爱的浏览器IE/FireFox我的是FireFox 2.0刚下载的很爽不怕流氓软件哈哈。 在浏览器里面输入http://localhost/phpinfo.php如果你的这个页面路径不一致请自行输入。 输出的内容中如果你能够顺利的看到 PDO PDO support enabled PDO drivers  mysql, pgsql, sqlite, mssql, odbc, firebird  后面有各种驱动的说明 PDO_Firebirdpdo_mssqlpdo_mysqlPDO_ODBCpdo_pgsqlpdo_sqlite 那么恭喜你安装成功了否则请仔细检查上面的步骤。 【牛刀小小试验】 我用的是MySQL 4.0.26但是我个人推荐大家使用 MySQL 4.1.x 或者 MySQL 5.0.x因为那些版本有很多有趣的东西值得去学习。我们这里PDO需要连接的就是我的MySQL 4.0啦如果你没有安装MySQL请自行安装。我们建立好了MySQL并且在test库里添加了表foo包括 id,name,gender,time等四个字段。 我们开始构造第一个PDO应用建立一个pdo.php文件在Web文档目录下 ?php $dsn mysql:hostlocalhost;dbnametest; $db new PDO($dsn, root, ); $count $db-exec(INSERT INTO foo SET name heiyeluren,gender男,timeNOW()); echo $count; $db null; ? 不明白啥意思俺们来慢慢讲讲。这行 $dsn mysql:hostlocalhost;dbnametest; 就是构造我们的DSN数据源看看里面的信息包括数据库类型是mysql主机地址是localhost数据库名称是test就这么几个信息。不同数据库的数据源构造方式是不一样的。 $db new PDO($dsn, root, ); 初始化一个PDO对象构造函数的参数第一个就是我们的数据源第二个是连接数据库服务器的用户第三个参数是密码。我们不能保证连接成功后面我们会讲到异常情况这里我们姑且认为它是连接成功的。 $count $db-exec(INSERT INTO foo SET name heiyeluren,gender男,timeNOW()); echo $count; 调用我们连接成功的PDO对象来执行一个查询这个查询是一个插入一条记录的操作使用PDO::exec() 方法会返回一个影响记录的结果所以我们输出这个结果。最后还是需要结束对象资源 $db null; 默认这个不是长连接如果需要数据库长连接需要最后加一个参数array(PDO::ATTR_PERSISTENT true) 变成这样 $db new PDO($dsn, root, , array(PDO::ATTR_PERSISTENT true)); 一次操作就这么简单也许跟以前的没有太大区别跟ADOdb倒是有几分相似。 【继续了解】 如果我们想提取数据的话那么就应该使用数据获取功能。下面用到的$db都是上面已经连接好的对象 ?php foreach($db-query(SELECT * FROM foo)){ print_r($row); } ? 我们也可以使用这种获取方式 ?php $rs $db-query(SELECT * FROM foo); while($row $rs-fetch()){ print_r($row); } ? 如果想一次把数据都获取到数组里可以这样 ?php $rs $db-query(SELECT * FROM foo); $result_arr $rs-fetchAll(); print_r($result_arr); ? 输出 Array (     [0] Array         (             [id] 1             [0] 1             [name] heiyeluren             [1] heiyeluren             [gender] 男             [2] 男             [time] 2006-10-28 23:14:23             [3] 2006-10-28 23:14:23         ) } 我们看里面的记录数字索引和关联索引都有浪费资源我们只需要关联索引的 ?php $db-setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER); $rs $db-query(SELECT * FROM foo); $rs-setFetchMode(PDO::FETCH_ASSOC); $result_arr $rs-fetchAll(); print_r($result_arr); ? 看上面的代码setAttribute() 方法是设置部分属性主要属性有PDO::ATTR_CASE、PDO::ATTR_ERRMODE等等我们这里需要设置的是 PDO::ATTR_CASE就是我们使用关联索引获取数据集的时候关联索引是大写还是小写有几个选择 PDO::CASE_LOWER -- 强制列名是小写 PDO::CASE_NATURAL -- 列名按照原始的方式 PDO::CASE_UPPER -- 强制列名为大写 我们使用setFetchMode方法来设置获取结果集的返回值的类型同样类型还有 PDO::FETCH_ASSOC -- 关联数组形式 PDO::FETCH_NUM -- 数字索引数组形式 PDO::FETCH_BOTH -- 两者数组形式都有这是缺省的 PDO::FETCH_OBJ -- 按照对象的形式类似于以前的 mysql_fetch_object() 当然一般情况下我们是使用PDO::FETCH_ASSOC具体使用什么按照你自己的需要其他获取类型参考手册。 除了上面这种获取数据的方式还有这种 ?php $rs $db-prepare(SELECT * FROM foo); $rs-execute(); while($row $rs-fetch()){ print_r($row); } ? 其实差不多啦。如果你想获取指定记录里一个字段结果的话可以使用 PDOStatement::fetchColumn(): ?php $rs $db-query(SELECT COUNT(*) FROM foo); $col $rs-fetchColumn(); echo $col; ? 一般使用fetchColumn()来进行count统计或者某些只需要单字段的记录很好操作。 简单的总结一下上面的操作: 查询操作主要是PDO::query()、PDO::exec()、PDO::prepare()。PDO::query()主要是用于有记录结果返回的操作特别是SELECT操作PDO::exec()主要是针对没有结果集合返回的操作比如INSERT、UPDATE、DELETE等操作它返回的结果是当前操作影响的列数。PDO::prepare()主要是预处理操作需要通过$rs-execute()来执行预处理里面的SQL语句这个方法可以绑定参数功能比较强大不是本文能够简单说明白的大家可以参考手册和其他文档。 获取结果集操作主要是PDOStatement::fetchColumn()、PDOStatement::fetch()、PDOStatement::fetchALL()。PDOStatement::fetchColumn() 是获取结果指定第一条记录的某个字段缺省是第一个字段。PDOStatement::fetch() 是用来获取一条记录PDOStatement::fetchAll()是获取所有记录集到一个中获取结果可以通过PDOStatement::setFetchMode来设置需要结果集合的类型。 另外有两个周边的操作一个是PDO::lastInsertId()和PDOStatement::rowCount()。PDO::lastInsertId()是返回上次插入操作主键列类型是自增的最后的自增ID。PDOStatement::rowCount()主要是用于PDO::query()和PDO::prepare()进行DELETE、INSERT、UPDATE操作影响的结果集对PDO::exec()方法和SELECT操作无效。 【错误处理】 如果程序中碰到错误咋办我们这里描述PDO类的错误信息和异常处理。 1. 面向对象的方式 先看看如果连接错误等的处理使用面向对象的方式来处理 ?php try { $db new PDO(mysql:hostlocalhost;dbnametest, $user, $pass); $db null; } catch (PDOException $e) { print Error: . $e-getMessage() . br/; die(); } ? 这里利用我们PHP 5面向对象的异常处理特征如果里面有异常的话就初始化调用PDOException来初始化一个异常类。 PDOException异常类的属性结构 ?php class PDOException extends Exception { public $errorInfo null;  // 错误信息可以调用 PDO::errorInfo() 或 PDOStatement::errorInfo()来访问 protected $message;    // 异常信息可以试用 Exception::getMessage() 来访问 protected $code;             // SQL状态错误代码可以使用 Exception::getCode() 来访问 } ? 这个异常处理类是集成PHP 5内置的异常处理类我们简单的看一下PHP 5内置的异常处理类结构 ?php class Exception { // 属性 protected $message Unknown exception;   // 异常信息 protected $code 0;                        // 用户自定义异常代码 protected $file;                            // 发生异常的文件名 protected $line;                            // 发生异常的代码行号     // 方法 final function getMessage();                // 返回异常信息 final function getCode();                   // 返回异常代码 final function getFile();                   // 返回发生异常的文件名 final function getLine();                   // 返回发生异常的代码行号 final function getTrace();                  // backtrace() 数组 final function getTraceAsString();          // 已格成化成字符串的 getTrace() 信息 } ? 相应的在代码中可以合适的调用 getFile() 和 getLine() 来进行错误定位更方便的进行调试。 2. 使用面向过程的方法 先看代码 ? $db new PDO(mysql:hostlocalhost;dbnametest, $user, $pass); $rs $db-query(SELECT aa,bb,cc FROM foo); if ($db-errorCode() ! 00000){ print_r($db-errorInfo()); exit; } $arr $rs-fetchAll(); print_r($arr); $db null; ? PDO和PDOStatement对象有errorCode() 和 errorInfo() 方法如果没有任何错误, errorCode() 返回的是: 00000 否则就会返回一些错误代码。errorInfo() 返回的一个数组包括PHP定义的错误代码和MySQL的错误代码和错误信息数组结构如下 Array (     [0] 42S22     [1] 1054     [2] Unknown column aaa in field list ) 每次执行查询以后errorCode() 的结果都是最新的所以我们可以很容易自己控制错误信息显示。 【简单总结】 从上面的使用看出PDO功能确实强大另外还有一些内容我没有讲到比如绑定参数、预处理、存储过程、事务处理等等功能。另外还有不同数据扩 DSN的构造Oracle数据库自己很多特殊的东西都需要深入去学习理解这篇文章就只是简单的描述了一些入门知识算是对PDO一个简单的了解吧。 [ 参考资料 ] PHP 5 数据对象 (PDO) 抽象层与 Oracle PDO Functions PDO为何物 PODPHP Data Object扩展在PHP5中加入PHP6中将默认识用PDO连接数据库所有非PDO扩展将会在PHP6被从扩展中移除。该扩展提供PHP内置类 PDO来对数据库进行访问不同数据库使用相同的方法名解决数据库连接不统一的问题。 我是配置在windows下做开发用的。 ■PDO的目标 提供一种轻型、清晰、方便的 API 统一各种不同 RDBMS 库的共有特性但不排除更高级的特性。 通过 PHP 脚本提供可选的较大程度的抽象/兼容性。 ■PDO的特点 性能。PDO 从一开始就吸取了现有数据库扩展成功和失败的经验教训。因为 PDO 的代码是全新的所以我们有机会重新开始设计性能以利用 PHP 5 的最新特性。 能力。PDO 旨在将常见的数据库功能作为基础提供同时提供对于 RDBMS 独特功能的方便访问。 简单。PDO 旨在使您能够轻松使用数据库。API 不会强行介入您的代码同时会清楚地表明每个函数调用的过程。 运行时可扩展。PDO 扩展是模块化的使您能够在运行时为您的数据库后端加载驱动程序而不必重新编译或重新安装整个 PHP 程序。例如PDO_OCI 扩展会替代 PDO 扩展实现 Oracle 数据库 API。还有一些用于 MySQL、PostgreSQL、ODBC 和 Firebird 的驱动程序更多的驱动程序尚在开发。 ■安装PDO 我这里是WINDOWS下开发用的PDO扩展要是你要在Linux下安装配置请到别的地方寻找。 版本要求 php5.1以及以后版本的程序包里已经带了 php5.0.x则要到pecl.php.net下载放到你的扩展库就是PHP所在的文件夹的ext文件夹下 手册上说5.0之前的版本不能运行PDO扩展。 配置 修改你的php.ini配置文件,使它支持pdo.php.ini这个东西没有弄懂的话先弄清楚要修改调用你的phpinfo()函数所显示的那个php.ini 把 extensionphp_pdo.dll前面的分号去掉分毫是php配置文件注释符号,这个扩展是必须的。 往下还有 ;extensionphp_pdo.dll ;extensionphp_pdo_firebird.dll ;extensionphp_pdo_informix.dll ;extensionphp_pdo_mssql.dll ;extensionphp_pdo_mysql.dll ;extensionphp_pdo_oci.dll ;extensionphp_pdo_oci8.dll ;extensionphp_pdo_odbc.dll ;extensionphp_pdo_pgsql.dll ;extensionphp_pdo_sqlite.dll 各各扩展所对应的数据库是 Driver nameSupported databasesPDO_DBLIBFreeTDS / Microsoft SQL Server / SybasePDO_FIREBIRDFirebird/Interbase 6PDO_INFORMIXIBM Informix Dynamic ServerPDO_MYSQLMySQL 3.x/4.xPDO_OCIOracle Call InterfacePDO_ODBCODBC v3 (IBM DB2, unixODBC and win32 ODBC)PDO_PGSQLPostgreSQLPDO_SQLITESQLite 3 and SQLite 2 你要使用哪种数据库只要把相应的扩展前的注释符号;去掉就可以了。 ■使用PDO 我这里假设你已经装好mysql了要是没装的话麻烦先想办法装上我的是mysql5.0.22,黑夜路人用的是MySQL 4.0.26也可以用。 ★数据库的连接 我们通过下面的例子来分析PDO连接数据库 ?php $dbmsmysql; //数据库类型 Oracle 用ODI,对于开发者来说使用不同的数据库只要改这个不用记住那么多的函数了 $hostlocalhost;//数据库主机名 $dbNametest; //使用的数据库 $userroot; //数据库连接用户名 $pass; //对应的密码 $dsn$dbms:host$host;dbname$dbName; // try{ $dbhnewPDO($dsn,$user,$pass);//初始化一个PDO对象就是创建了数据库连接对象$dbh echo连接成功br/; /*你还可以进行一次搜索操作 foreach($dbh-query(SELECT * from FOO)as$row){ print_r($row);//你可以用 echo($GLOBAL); 来看到这些值 } */ $dbhnull; }catch(PDOException$e){ die(Error!: .$e-getMessage().br/); } //默认这个不是长连接如果需要数据库长连接需要最后加一个参数array(PDO::ATTR_PERSISTENT true) 变成这样 $dbnewPDO($dsn,$user,$pass,array(PDO::ATTR_PERSISTENTtrue)); ? ★数据库查询 上面我们已经进行了一次查询我们还可以使用如下的查询 ?php $db-setAttribute(PDO::ATTR_CASE,PDO::CASE_UPPER); //设置属性 $rs$db-query(SELECT * FROM foo); $rs-setFetchMode(PDO::FETCH_ASSOC); $result_arr$rs-fetchAll(); print_r($result_arr); ? 以上因为用到setAttribute()方法放上那两个参数把字段名强制转换成大写。下面列出多有PDO::setAttribute()的参数 PDO::ATTR_CASE: 强制列名变成一种格式详细如下(第二个参数) PDO::CASE_LOWER: 强制列名是小写.PDO::CASE_NATURAL: 列名按照原始的方式PDO::CASE_UPPER: 强制列名为大写.PDO::ATTR_ERRMODE: 错误提示. PDO::ERRMODE_SILENT: 不显示错误信息只显示错误码.PDO::ERRMODE_WARNING: 显示警告错误.PDO::ERRMODE_EXCEPTION: 抛出异常.PDO::ATTR_ORACLE_NULLS(不仅仅是ORACLE有效别的数据库也有效): 指定数据库返回的NULL值在php中对应的数值。 PDO::NULL_NATURAL: 不变.PDO::NULL_EMPTY_STRING: Empty string is converted toNULL.PDO::NULL_TO_STRING: NULL is converted to an empty string.PDO::ATTR_STRINGIFY_FETCHES: Convert numeric values to strings when fetching. Requires bool.PDO::ATTR_STATEMENT_CLASS: Set user-supplied statement class derived from PDOStatement. Cannot be used with persistent PDO instances. Requiresarray(string classname, array(mixed constructor_args)).PDO::ATTR_AUTOCOMMIT(available in OCI, Firebird and MySQL): Whether to autocommit every single statement.PDO::MYSQL_ATTR_USE_BUFFERED_QUERY(available in MySQL): Use buffered queries.例子中的$rs-setFetchMode(PDO::FETCH_ASSOC);是PDOStatement::setFetchMode()对返回类型的声明。 有如下 PDO::FETCH_ASSOC-- 关联数组形式 PDO::FETCH_NUM   -- 数字索引数组形式 PDO::FETCH_BOTH  -- 两者数组形式都有这是缺省的 PDO::FETCH_OBJ  -- 按照对象的形式类似于以前的 mysql_fetch_object() 更多返回类型声明(PDOStatement::方法名)看手册。 ★插入更新删除数据 $db-exec(DELETE FROM xxxx_menu where mid43); 简单的总结一下上面的操作: 查询操作主要是PDO::query()、PDO::exec()、PDO::prepare()。 PDO::query()主要是用于有记录结果返回的操作特别是SELECT操作 PDO::exec()主要是针对没有结果集合返回的操作比如INSERT、UPDATE、DELETE等操作它返回的结果是当前操作影响的列数。 PDO::prepare()主要是预处理操作需要通过$rs-execute()来执行预处理里面的SQL语句这个方法可以绑定参数功能比较强大不是本文能够简单说明白的大家可以参考手册和其他文档。 获取结果集操作主要是PDOStatement::fetchColumn()、PDOStatement::fetch()、PDOStatement::fetchALL()。 PDOStatement::fetchColumn()是获取结果指定第一条记录的某个字段缺省是第一个字段。 PDOStatement::fetch()是用来获取一条记录 PDOStatement::fetchAll()是获取所有记录集到一个中获取结果可以通过PDOStatement::setFetchMode来设置需要结果集合的类型。 另外有两个周边的操作一个是PDO::lastInsertId()和PDOStatement::rowCount()。PDO::lastInsertId()是返回上次插入操作主键列类型是自增的最后的自增ID。 PDOStatement::rowCount()主要是用于PDO::query()和PDO::prepare()进行DELETE、INSERT、UPDATE操作影响的结果集对PDO::exec()方法和SELECT操作无效。 ★事务和自动提交     至此您已经通过 PDO 连接到了 mysql在发出查询之前您应该理解 PDO 是如何管理事务的。如果之前没有接触过事务那么首先要知道事务的 4 个特征原子性Atomicity、一致性Consistency、独立性Isolation和持久性Durability即 ACID。用外行人的话说对于在一个事务中执行的任何工作即使它是分阶段执行的也一定可以保证该工作会安全地应用于数据库并且在工作被提交时不会受到来自其他连接的影响。事务性工作可以根据请求自动撤销假设您还没有提交它这使得脚本中的错误处理变得更加容易。     事务通常是通过把一批更改积蓄起来、使之同时生效而实现的。这样做的好处是可以大大提高这些更新的效率。换句话说事务可以使脚本更快而且可能更健壮不过需要正确地使用事务才能获得这样的好处。     不幸的是并不是每种数据库都支持事务(Mysql5支持事务mysql4我不知道)所以当第一次打开连接时PDO 需要在所谓的“自动提交auto-commit”模式下运行。自动提交模式意味着如果数据库支持事务那么您所运行的每一个查询都有它自己的隐式事务如果数据库不支持事务每个查询就没有这样的事务。如果您需要一个事务那么必须使用 PDO::beginTransaction() 方法来启动一个事务。如果底层驱动程序不支持事务那么将会抛出一个 PDOException无论错误处理设置是怎样的这总是一个严重错误状态。在一个事务中可以使用 PDO::commit() 或 PDO::rollBack() 来结束该事务这取决于事务中运行的代码是否成功。     当脚本结束时或者当一个连接即将被关闭时如果有一个未完成的事务那么 PDO 将自动回滚该事务。这是一种安全措施有助于避免在脚本非正常结束时出现不一致的情况 —— 如果没有显式地提交事务那么假设有某个地方会出现不一致所以要执行回滚以保证数据的安全性。 //例子来自http://www.ibm.com/developerworks/cn/db2/library/techarticles/dm-0505furlong/index.html try{   $dbhnew PDO(odbc:SAMPLE,db2inst1,ibmdb2,       array(PDO_ATTR_PERSISTENTtrue));   echoConnected\n;   $dbh-setAttribute(PDO_ATTR_ERRMODE,PDO_ERRMODE_EXCEPTION);   $dbh-beginTransaction();   $dbh-exec(insert into staff (id, first, last) values (23, Joe, Bloggs));   $dbh-exec(insert into salarychange (id, amount, changedate)       values (23, 50000, NOW()));   $dbh-commit(); }catch(Exception $e){   $dbh-rollBack();   echoFailed: .$e-getMessage(); } 在上面的示例中假设我们为一个新雇员创建一组条目这个雇员有一个 ID 号即 23。除了输入这个人的基本数据外我们还需要记录雇员的薪水。两个更新分别完成起来很简单但通过将这两个更新包括在 beginTransaction() 和 commit() 调用中就可以保证在更改完成之前其他人无法看到更改。如果发生了错误catch 块可以回滚事务开始以来发生的所有更改并打印出一条错误消息。 并不是一定要在事务中作出更新。您也可以发出复杂的查询来提取数据还可以使用那种信息构建更多的更新和查询。当事务在活动时可以保证其他人在工作进行当中无法作出更改。事实上这不是 100% 的正确但如果您之前没有听说过事务的话这样介绍也未尝不可。 ★预处理语句和存储过程 很多更成熟的数据库都支持预处理语句的概念。什么是预处理语句您可以把预处理语句看作您想要运行的 SQL 的一种编译过的模板它可以使用变量参数进行定制。预处理语句可以带来两大好处 查询只需解析或准备一次但是可以用相同或不同的参数执行多次。当查询准备好后数据库将分析、编译和优化执行该查询的计划。对于复杂的查询这个过程要花比较长的时间如果您需要以不同参数多次重复相同的查询那么该过程将大大降低应用程序的速度。通过使用预处理语句可以避免重复分析/ 编译/优化周期。简言之预处理语句使用更少的资源因而运行得更快。 提供给预处理语句的参数不需要用引号括起来驱动程序会处理这些。如果应用程序独占地使用预处理语句那么可以确保没有 SQL 入侵发生。然而如果您仍然将查询的其他部分建立在不受信任的输入之上那么就仍然存在风险。 预处理语句是如此有用以致 PDO 实际上打破了在目标 4 中设下的规则如果驱动程序不支持预处理语句那么 PDO 将仿真预处理语句。 实例PDO的应用例子 ?php $dbmsmysql;//数据库类型 Oracle 用ODI,对于开发者来说使用不同的数据库只要改这个不用记住那么多的函数了 $hostlocalhost;//数据库主机名 $dbNametest;//使用的数据库 $userroot;//数据库连接用户名 $pass;//对应的密码 $dsn$dbms:host$host;dbname$dbName; classdbextendsPDO{ publicfunction__construct(){ try{             parent::__construct($GLOBALS[dsn],$GLOBALS[user],$GLOBALS[pass]); }catch(PDOException$e){ die(Error: .$e-__toString().br/); } } publicfinalfunctionquery($sql){ try{ returnparent::query($this-setString($sql)); }catch(PDOException$e){ die(Error: .$e-__toString().br/); } } privatefinalfunctionsetString($sql){ echo我要处理一下$sql; return$sql; } } $dbnewdb(); $db-setAttribute(PDO::ATTR_CASE,PDO::CASE_UPPER); foreach($db-query(SELECT * from xxxx_menu)as$row){ print_r($row); } $db-exec(DELETE FROM  xxxx_menu where mid43); ?转载于:https://www.cnblogs.com/xutongle/archive/2011/11/08/2241709.html
http://wiki.neutronadmin.com/news/209729/

相关文章:

  • 河南建设工程信息网站视频网站备案流程图
  • 免费申请网站空间和域名seo查询工具有哪些
  • 网站建设一个购买链接html5网站图标
  • 安装了lnmp怎么做网站代理网页网游
  • 中国软件和服务外包网广州知名网站排名优化
  • 高明网站设计报价asp.net 实现 网站的开关
  • 做鲜榨果汁店网站大连网页设计培训学校
  • 跟做网站相关的法律做网站需要固定ip
  • 广西网站设计公司排行榜怎么看公司网站建设的时间
  • wordpress多站点无法访问怎么开电商
  • 做购物网站哪家公司好男女做暧暧观看免费网站
  • 微网站工程案例展示天津做网站建设
  • 连山网站建设医院门户网站开发
  • 单页网站是什么样子的锐途网站建设
  • 代做电大网站ui作业网站 推送
  • 网站域名过期还能用吗网站上的3d怎么做的
  • 网站描述在关键字前可以吗做网站空间放哪些文件夹
  • 可以不使用备案的网站名吗影院网站怎么做
  • 百度小程序还需要做网站吗wordpress如何使用父导航可点击
  • 专业网站建设网站价格汕头手机端建站模板
  • 山东临沂网站建设网站建设需要多少人
  • 湘潭网站建设 找磐石网络一流wordpress降低sql查询
  • 公司网站制作的费用一键建设网站
  • 外贸网站模板大全网页设计欣赏作品
  • 模板网站的弊端在哪ui设计师要学什么
  • 35互联做的网站34线城市做网站推广
  • 深圳龙岗网站建设培训学校现在学什么行业和技术前景好
  • 千库网网页版登录官网seo系统优化
  • 网站制作推广方案云主机安装多个网站
  • 免费淘宝网站建设襄阳市住房和城乡建设局官方网站