php pdo 簡單使用 (一)
來源:程序員人生 發布時間:2015-08-05 07:40:42 閱讀次數:3805次
簡介:
PDO擴大為PHP訪問數據庫定義了1個輕量級的、1致性的接口,它提供了1個數據訪問抽象層,這樣,不管使用甚么數據庫,都可以通過1致的函數履行查詢和獲得數據。
即提供了1個數據庫訪問抽象層能使得我們通過1致的函數和寫法來操作不同數據庫,有益于往后對數據庫的遷移,固然也有安全方面的提升。
對照:
php 操作數據庫以mysql 為例經常使用的方法有 php_mysql , php_mysqli , pdo
1.php_mysql 和 php_mysqli 都是不可以移植的,只能利用于mysql 數據庫, 而pdo 是可以輕易移植的。
2.php_mysql 是我們初學php 學的操作數據庫的函數,但是其實他基本上很少使用了,其中最重要的1點就是容易造成安全問題。
存在SQL注入,因而php 提供了函數mysql_real_escape_string 如果存在很多的變量每個都要經過 mysql_real_escape_string
反而變的很麻煩。
3.pdo 支持預處理,預處理功能可以有效的避免sql注入,并提高效力。
4.php_mysqli 和 pdo 都支持面向對象。
5.pdo 長連接方式性能上優于php_mysqli (參考網上資料)
php_mysql 方式優勢已不大了,php_mysqli 最致命的就是不能移植到其它數據庫,除非你很肯定不會更換數據庫。明顯 pdo方式連接數據庫將會是1種趨勢。
pdo簡單操作數據庫:
首先php 要啟用php-pdo 相干擴大
<?php
$dbType = 'mysql';
$dbUser = 'root';
$dbPass = 'simael';
$dbhost = 'localhost';
$dbName = 'pdotest';
$dsn="$dbType:host=$dbhost;dbname=$dbName";
try{
$pdo = new PDO($dsn, $dbUser, $dbPass);
echo "PDO成功連接MySQL
數據庫!";
}catch(PDOException $exception){
echo $exception->getMessage();
}
插入 數據
<?php
//$pdo->query('set names utf8');
$sql = "INSERT INTO la_comments SET nick_name='formPdo',email='pdo@pdo.com',comment='中文comment',page_id='11',created_at=NOW(),updated_at=NOW()";
$res1 = $pdo->exec($sql);
var_dump($res1);
此時去數據庫看到中文 多是亂碼,是由于編碼問題各種錯亂的緣由
添加代碼
$pdo->query('set names utf8');
數據存儲仍存在毛病,是由于有可能你的header 是gbk 編碼
網上總結的 編碼需要注意的問題以下:
1、服務端程序聲明編碼,比如header("Content-type: text/html; charset=utf⑻");
2、客戶端聲明編碼,比如 <META http-equiv="content-type" content="text/html; charset=utf⑻">
3、數據庫編碼、表和字段的編碼
4、文件本身編碼屬性
5、連接數據庫時請聲明編碼,比如$pdo->query('set names utf8');
只要上述都1致了編碼問題1般都會解決的。
完全示例代碼:(文件本身也應當使用utf8 編碼)
<?php
header("Content-type: text/html; charset=utf⑻");
<pre name="code" class="php">$dbType = 'mysql';
$dbUser = 'root';
$dbPass = 'simael';
$dbhost = 'localhost';
$dbName = 'pdotest';
$dsn="$dbType:host=$dbhost;dbname=$dbName";
try{
$pdo = new PDO($dsn, $dbUser, $dbPass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES'utf8';"));
//$pdo = new PDO($dsn, $dbUser, $dbPass);
echo "PDO成功連接MySQL
數據庫!";
}catch(PDOException $exception){
echo $exception->getMessage();
}
$pdo->query('set names utf8');
$sql = "INSERT INTO la_comments SET nick_name='formPdo',email='pdo@pdo.com',comment='中文comment',page_id='11',created_at=NOW(),updated_at=NOW()";
$res1 = $pdo->exec($sql);
var_dump($res1);
$sql = "SELECT * FROM la_comments";
$res2 = $pdo->query($sql);
while($row = $res2->fetch()){
print_r($row);
echo '<br>';
}
$pdo = null;
?>
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈