PHP PDO 基礎
http://blog.csdn.net/nailwl/archive/2009/10/27/4733655.aspx
PDO是一個“數據庫訪問抽象層”,作用是統一各種數據庫的訪問接口,與mysql和mysqli的函數庫相比,PDO讓跨數據庫的使用更具有親和力;與ADODB和MDB2相比,PDO更高效。目前而言,實現“數據庫抽象層”任重而道遠,使用PDO這樣的“數據庫訪問抽象層”是一個不錯的選擇。 PDO->beginTransaction() — 標明回滾起始點 PDO->commit() — 標明回滾結束點,並執行SQL PDO->__construct() — 建立一個PDO鏈接數據庫的實例 PDO->errorCode() — 獲取錯誤碼 PDO->errorInfo() — 獲取錯誤的信息 PDO->exec() — 處理一條SQL語句,並返回所影響的條目數 PDO->getAttribute() — 獲取一個“數據庫連接對象”的屬性 PDO->getAvailableDrivers() — 獲取有效的PDO驅動器名稱 PDO->lastInsertId() — 獲取寫入的最後一條數據的主鍵值 PDO->prepare() — 生成一個“查詢對象” PDO->query() — 處理一條SQL語句,並返回一個“PDOStatement” PDO->quote() — 爲某個SQL中的字符串添加引號 PDO->rollBack() — 執行回滾 PDO->setAttribute() — 爲一個“數據庫連接對象”設定屬性 PDOStatement->bindColumn() — Bind a column to a PHP variable PDOStatement->bindParam() — Binds a parameter to the specified variable name PDOStatement->bindValue() — Binds a value to a parameter PDOStatement->closeCursor() — Closes the cursor, enabling the statement to be executed again. PDOStatement->columnCount() — Returns the number of columns in the result set PDOStatement->errorCode() — Fetch the SQLSTATE associated with the last operation on the statement handle PDOStatement->errorInfo() — Fetch extended error information associated with the last operation on the statement handle PDOStatement->execute() — Executes a prepared statement PDOStatement->fetch() — Fetches the next row from a result set PDOStatement->fetchAll() — Returns an array containing all of the result set rows PDOStatement->fetchColumn() — Returns a single column from the next row of a result set PDOStatement->fetchObject() — Fetches the next row and returns it as an object. PDOStatement->getAttribute() — Retrieve a statement attribute PDOStatement->getColumnMeta() — Returns metadata for a column in a result set PDOStatement->nextRowset() — Advances to the next rowset in a multi-rowset statement handle PDOStatement->rowCount() — Returns the number of rows affected by the last SQL statement PDOStatement->setAttribute() — Set a statement attribute PDOStatement->setFetchMode() — Set the default fetch mode for this statement 從函數列表可以看出,操作基於不同的對象,“PDO”表示的是一個數據庫連接對象(new PDO產生),“PDOStatement”表示的是一個查詢對象(PDO->query()產生)或者是一個結果集對象(PDO->prepare()產生)。 一個“數據庫連接對象”的例子,返回“PDO”: <?php $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ''); ?> 一個“查詢對象”的例子,返回“PDOStatement”: <?php $sql = "INSERT INTO `test`.`table` (`name` ,`age`)VALUES (?, ?);"; $stmt = $dbh->prepare($sql); ?> 一個“結果集對象”的例子,返回“PDOStatement”: <?php $sql = "SELECT * FROM `table` WHERE `name` = 'samon'"; $stmt = $dbh->query($sql); ?> 在test庫裏面生成table表,並寫入一些數據: <?php $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ''); $dbh->query('set names utf8;'); $sql = " DROP TABLE IF EXISTS `table`; CREATE TABLE `test`.`table` ( `id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR( 255 ) NOT NULL , `age` VARCHAR( 255 ) NOT NULL ) ENGINE = InnoDB DEFAULT CHARSET=utf8; INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('samon', '27'); INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('leo', '26'); INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('ben', '28'); "; $dbh->query($sql); ?> PDO->exec()方法的作用是處理一條SQL語句,並返回所影響的條目數。 PDO->query()方法的作用是處理一條SQL語句,並返回一個“PDOStatement”。 PDO->prepare()方法的作用是生成一個“查詢對象”。 PDO->lastInsertId()方法的作用是獲取寫入的最後一條數據的主鍵值。 <?php $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ''); $dbh->query('set names utf8;'); $sql = "INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('mick', 22);"; $dbh->query($sql); $lid = $dbh->lastInsertId($sql); print_r($lid); // 顯示主鍵的值 ?> PDO->quote()方法的作用是爲某個SQL中的字符串添加引號。PDO->quote()方法有兩個參數,第一個參數是字符串,第二個參數表示參數的類型。 PDO->getAttribute()方法的作用是獲取一個“數據庫連接對象”的屬性。PDO->setAttribute()方法的作用是爲一個“數據庫連接對象”設定屬性。 <?php // 修改默認的錯誤顯示級別 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); ?> 屬性列表: PDO::PARAM_BOOL 表示一個布爾類型 PDO::PARAM_NULL 表示一個SQL中的NULL類型 PDO::PARAM_INT 表示一個SQL中的INTEGER類型 PDO::PARAM_STR 表示一個SQL中的SQL CHAR,VARCHAR類型 PDO::PARAM_LOB 表示一個SQL中的large object類型 PDO::PARAM_STMT 表示一個SQL中的recordset類型,還沒有被支持 PDO::PARAM_INPUT_OUTPUT Specifies that the parameter is an INOUT parameter for a stored procedure. You must bitwise-OR this value with an explicit PDO::PARAM_* data type. PDO::FETCH_LAZY 將每一行結果作爲一個對象返回 PDO::FETCH_ASSOC 僅僅返回以鍵值作爲下標的查詢的結果集,名稱相同的數據只返回一個 PDO::FETCH_NAMED 僅僅返回以鍵值作爲下標的查詢的結果集,名稱相同的數據以數組形式返回 PDO::FETCH_NUM 僅僅返回以數字作爲下標的查詢的結果集 PDO::FETCH_BOTH 同時返回以鍵值和數字作爲下標的查詢的結果集 PDO::FETCH_OBJ 以對象的形式返回結果集 PDO::FETCH_BOUND 將PDOStatement::bindParam()和PDOStatement::bindColumn()所綁定的值作爲變量名賦值後返回 PDO::FETCH_COLUMN 表示僅僅返回結果集中的某一列 PDO::FETCH_CLASS 表示以類的形式返回結果集 PDO::FETCH_INTO 表示將數據合併入一個存在的類中進行返回 PDO::FETCH_FUNC PDO::FETCH_GROUP PDO::FETCH_UNIQUE PDO::FETCH_KEY_PAIR 以首個鍵值下表,後面數字下表的形式返回結果集 PDO::FETCH_CLASSTYPE PDO::FETCH_SERIALIZE 表示將數據合併入一個存在的類中並序列化返回 PDO::FETCH_PROPS_LATE Available since PHP 5.2.0 PDO::ATTR_AUTOCOMMIT 在設置成true的時候,PDO會自動嘗試停止接受委託,開始執行 PDO::ATTR_PREFETCH 設置應用程序提前獲取的數據大小,並非所有的數據庫哦度支持 PDO::ATTR_TIMEOUT 設置連接數據庫超時的值 PDO::ATTR_ERRMODE 設置Error處理的模式 PDO::ATTR_SERVER_VERSION 只讀屬性,表示PDO連接的服務器端數據庫版本 PDO::ATTR_CLIENT_VERSION 只讀屬性,表示PDO連接的客戶端PDO驅動版本 PDO::ATTR_SERVER_INFO 只讀屬性,表示PDO連接的服務器的meta信息 PDO::ATTR_CONNECTION_STATUS PDO::ATTR_CASE 通過PDO::CASE_*中的內容對列的形式進行操作 PDO::ATTR_CURSOR_NAME 獲取或者設定指針的名稱 PDO::ATTR_CURSOR 設置指針的類型,PDO現在支持PDO::CURSOR_FWDONLY和PDO::CURSOR_FWDONLY PDO::ATTR_DRIVER_NAME 返回使用的PDO驅動的名稱 PDO::ATTR_ORACLE_NULLS 將返回的空字符串轉換爲SQL的NULL PDO::ATTR_PERSISTENT 獲取一個存在的連接 PDO::ATTR_STATEMENT_CLASS PDO::ATTR_FETCH_CATALOG_NAMES 在返回的結果集中,使用自定義目錄名稱來代替字段名。 PDO::ATTR_FETCH_TABLE_NAMES 在返回的結果集中,使用自定義表格名稱來代替字段名。 PDO::ATTR_STRINGIFY_FETCHES PDO::ATTR_MAX_COLUMN_LEN PDO::ATTR_DEFAULT_FETCH_MODE Available since PHP 5.2.0 PDO::ATTR_EMULATE_PREPARES Available since PHP 5.1.3. PDO::ERRMODE_SILENT 發生錯誤時不彙報任何的錯誤信息,是默認值 PDO::ERRMODE_WARNING 發生錯誤時發出一條php的E_WARNING的信息 PDO::ERRMODE_EXCEPTION 發生錯誤時拋出一個PDOException PDO::CASE_NATURAL 回覆列的默認顯示格式 PDO::CASE_LOWER 強制列的名字小寫 PDO::CASE_UPPER 強制列的名字大寫 PDO::NULL_NATURAL PDO::NULL_EMPTY_STRING PDO::NULL_TO_STRING PDO::FETCH_ORI_NEXT 獲取結果集中的下一行數據,僅在有指針功能時有效 PDO::FETCH_ORI_PRIOR 獲取結果集中的上一行數據,僅在有指針功能時有效 PDO::FETCH_ORI_FIRST 獲取結果集中的第一行數據,僅在有指針功能時有效 PDO::FETCH_ORI_LAST 獲取結果集中的最後一行數據,僅在有指針功能時有效 PDO::FETCH_ORI_ABS 獲取結果集中的某一行數據,僅在有指針功能時有效 PDO::FETCH_ORI_REL 獲取結果集中當前行後某行的數據,僅在有指針功能時有效 PDO::CURSOR_FWDONLY 建立一個只能向後的指針操作對象 PDO::CURSOR_SCROLL 建立一個指針操作對象,傳遞PDO::FETCH_ORI_*中的內容來控制結果集 PDO::ERR_NONE (string) 設定沒有錯誤時候的錯誤信息 PDO::PARAM_EVT_ALLOC Allocation event PDO::PARAM_EVT_FREE Deallocation event PDO::PARAM_EVT_EXEC_PRE Event triggered prior to execution of a prepared statement. PDO::PARAM_EVT_EXEC_POST Event triggered subsequent to execution of a prepared statement. PDO::PARAM_EVT_FETCH_PRE Event triggered prior to fetching a result from a resultset. PDO::PARAM_EVT_FETCH_POST Event triggered subsequent to fetching a result from a resultset. PDO::PARAM_EVT_NORMALIZE Event triggered during bound parameter registration allowing the driver to normalize the parameter name. PDO->getAvailableDrivers()方法的作用是獲取有效的PDO驅動器名稱。 PDO->errorInfo()方法的作用獲取錯誤的信息,PDO->errorCode()方法的作用是獲取錯誤碼。 <?php $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ''); $dbh->query('set names utf8;'); $sql = "INSERT INTO `test`.`table` (`name` ,`ageeeeee`)VALUES ('mick', 22);"; $dbh->query($sql); print_r($dbh->errorInfo()); /** * Array * ( * [0] => 42S22 * [1] => 1054 * [2] => Unknown column 'ageeeeee' in 'field list' * ) */ ?> PDO->__construct()方法的作用是建立一個PDO鏈接數據庫的實例。 PDO->beginTransaction(),PDO->commit(),PDO->rollBack()這三個方法是在支持回滾功能時一起使用的。PDO->beginTransaction()方法標明起始點,PDO->commit()方法標明回滾結束點,並執行SQL,PDO->rollBack()執行回滾。 <?php try { $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ''); $dbh->query('set names utf8;'); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->beginTransaction(); $dbh->exec("INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('mick', 22);"); $dbh->exec("INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('lily', 29);"); $dbh->exec("INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('susan', 21);"); $dbh->commit(); } catch (Exception $e) { $dbh->rollBack(); echo "Failed: " . $e->getMessage(); } ?>
ubuntu9.04下的lamp安裝 http://blog.csdn.net/dhh200607141/archive/2009/10/17/4680623.aspx 一、安裝1. 首先安裝SSHsudo apt-get insta
<div class="alert alert-success fade in"> <i class="fa-fw fa fa-check"></i> <button class="close" data-dismiss=
python的os模塊提供一些系統api,sys模塊主要針對解釋器的設置,運行是的動態信息。 下面記錄幾個有用的方法。 1、當我們打開一個文件的時候,有隻讀方式,寫方式,讀寫方式,等等,如果我們是以只讀方式打開的,那麼在寫入文件的時候肯定
summernote是一個開源的項目,一個很好用的html在線編輯器。大家可以去github上下載編譯好的源代碼。 下面我將一下簡單的嵌入到我們的html文件裏。 (1)下載sumernote.js文件 (2)<script src=".
> 問題描述 在Maven的Web工程中,pom.xml文件出現錯誤Could not find artifact com.sun:tools:jar:1.5.0,導致整個工程無法正確編譯 >問題原因 jre中並沒有com.sun
當UpdatePanel和jQuery一塊使用的時候會有一些問題 問題重現: 1.單獨創建一個page。 2.爲其添加UpdatePanel1,在UpdatePanel1裏添加LabelA。 3.添加Button1用作AutoPostba
再對比計算機網絡:有以IP協議爲基礎的TCP協議,以TCP協議爲基礎的HTTP協議,以TCP協議爲基礎的FTP協議等。這裏HTTP和FTP是同一層次的兩種不同協議。 如下圖: 高層3:HTTP協議、FTP協議
HTML(Hyper Text Mark-up Language )即超文本標記語言,自萬維網初創之日起,它就已經成爲滿意度很高的公共語言。在過去的兩年裏,HTML5在性能上得到了很大的提升和改進,當仁不讓的獲得了大衆的青睞。本文分享了
前幾日開發一個音樂電臺用到了jPlayer,見網絡上資料很少,官方英文資料太坑爹TAT,於是就寫一個手記給大家參考下. 據我觀察,jPlayer的原理主要是用到HTML5,在不支持HTML5的瀏覽器上使用SWF。做到全兼容,這一點
一、setInterval 用法setInterval(functionName, interval [, param1, param2, ..., paramN]) 參數functionName 一個函數名或者一個對匿名函數的引用。 i
<script language="javascript" type="text/javascript"> function walktree(level,tree) { var textArea = document.getEleme
參考資料:http://www.w3school.com.cn/css/css_positioning.asp div/css中的定位——position 分爲三種:相對定位,絕對定
最近對大型網站有了一些深入的思考和了解: 一個典型的架構是這樣的: 模塊一:php在apache(包括fcgi)網站給外部的訪問者,可以說是一個UI接口界面; 模塊二:c++寫個後臺實時服務程序,通過調用fcgi實時獲取外部客戶的訪問請求
一、理解view解析過程 1.1 從邏輯view到物理view 在Spring MVC 中,controllers不會負責具體的頁面渲染,它僅僅是調用業務邏輯並返回model數據給view層,至於view層具體怎麼用HTML展現,
頁面進入和退出的特效 進入頁面 〈meta http-equiv="Page-Enter" content="revealTrans(duration=x, transition=y)"〉 退出頁面