在PHP開發中,mysql或者mysqli是現在大家使用較多的數據庫連接方式。在PHP5中已經開始有PDO支持了,聽說在下一個版本PHP6中,PDO將會作為默認的數據庫鏈接工具,不管是真還是假,PDO作為數據庫的另一種連接方式在不久的將來也許會很普遍的使用,這裡清源就目前掌握的知識來看,將PDO的使用以實例的方式和大家分享一下,文章的部分代碼來源於網絡。
在使用PDO之前首先要設置PHP.INI文件,使PHP支持PDO,因為PHP5默認是不支持的。在PHP安裝目錄下找到PHP.INI文件,打開並搜索extension=php_pdo.dll 和 extension=php_pdo_mysql.dll,將前面的分號(;)去掉,重啟apache即可。
接下來我們就開始寫PHP代碼了,首先是連接數據庫,看下面的例子:
exec('SET CHARACTER SET '.DB_CHARSET); $DBH->exec('SET NAMES '.DB_CHARSET); } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "
"; die(); } ?>
exec($sql_insert); //返回 bool 的true or fal $lastInsertId = $DBH->lastInsertId(); //刪除數據 $sql_delete = 'Delete FROM wp_options Where option_id='.$lastInsertId; $back = $DBH->exec($sql_delete); //返回 bool 的true or fal $lastInsertId = $DBH->lastInsertId(); //更新數據 $sql_update = 'Update wp_options SET option_name = \''.time().rand(1,100).'\' Where option_id='.$lastInsertId; $lastUpdateId = $DBH->lastInsertId(); //返回的對應的操作的id //查詢數據 $sql_select = 'Select option_id FROM wp_options orDER BY option_id DESC LIMIT 4 '; $back = $DBH->query($sql_select); //返回一個對象 這個對象可以用foreach 直接遍歷循環 循環的為查詢的結果集 $back = $DBH->query($sql_select)->fetch(); //返回一條數據結果 這個對象可以用foreach 直接遍歷循環 循環的為查詢的結果集 $back = $DBH->query($sql_select)->fetchAll(); //返回一個數組 這個對象可以用foreach 直接遍歷循環 循環的為查詢的結果集 $back = $DBH->query($sql_select)->fetchColumn(0); //返回一個字段字符串,這個字符串是返回的記錄的第一條記錄的第一個字段 ?>
beginTransaction();//開啟一個事務 //Sql 執行的內容 ...................... $DBH->exec($sql_insert); //執行一系列的操作 $DBH->exec($sql_update); $DBH->exec($sql_delete); //等等 $DBH->commit(); //如果正確執行完成 那麼確認 commit } catch(Exception $e) { $DBH->rollBack();//如果執行中有錯誤的情況下 回滾 } ?>
exec($sql_procedure); $sql_call_procedure = 'CALL inout_test(100,@out_option_name,@out_option_value)'; $DBH->exec($sql_call_procedure); $sql_select_procedure = 'Select @out_option_name,@out_option_value'; $back = $DBH->query($sql_select_procedure)->fetch(); $back = $DBH->exec($sql_drop_procedure); }catch(Exception $e){ echo $e->getMessage(); } ?>
prepare('Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,:option_name,:option_value,\'no\')'); $option_name = $option_value = ''; $stmt->bindParam(':option_name', $option_name); // $stmt->bindParam(':option_value', $option_value); // 插入一條數據A $option_name = 'name'.time(); $option_value = 'value'.time(); $stmt->execute(); // 插入另一條不同的數據B $option_name = 'name_'.time(); $option_value = 'value_'.time(); $stmt->execute(); $stmt = $DBH->prepare('Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,?,?,\'no\')'); $option_name = $option_value = ''; $stmt->bindParam('1', $option_name); // $stmt->bindParam('2', $option_value); // 這裡我們還可以插入A數據 $option_name = 'name'.time(); $option_value = 'value'.time(); $stmt->execute(); // 這裡我們同樣還可以插入B數據 $option_name = 'name_'.time(); $option_value = 'value_'.time(); $stmt->execute(); $stmt = $DBH->prepare("Select * FROM wp_options where option_id = ?"); if ($stmt->execute(array(@$_GET['option_id']))) { while (@$row = $stmt->fetch()) { print_r($row); } } ?>