校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > PHP使用PDO、mysqli擴(kuò)展實(shí)現(xiàn)與數(shù)據(jù)庫交互操作詳解

PHP使用PDO、mysqli擴(kuò)展實(shí)現(xiàn)與數(shù)據(jù)庫交互操作詳解

熱門標(biāo)簽:廣州防封卡外呼系統(tǒng)多少錢一個月 長春人工外呼系統(tǒng)服務(wù)商 外呼系統(tǒng)撥打暫時無法接通 江西手機(jī)自動外呼防封系統(tǒng)是什么 高德地圖標(biāo)注家 怎么向銷售公司推銷外呼系統(tǒng) 哪里辦理400電話 仁和怎么申請400開頭的電話 廣東地市地圖標(biāo)注

本文實(shí)例講述了PHP使用PDO、mysqli擴(kuò)展實(shí)現(xiàn)與數(shù)據(jù)庫交互操作。分享給大家供大家參考,具體如下:

數(shù)據(jù)庫

在我們開發(fā)php時,可能有人已經(jīng)學(xué)習(xí)了php數(shù)據(jù)庫的連接交互,也可能正準(zhǔn)備學(xué)習(xí)。如今,按照php的發(fā)展趨勢,mysql擴(kuò)展已經(jīng)停止開發(fā),在以后的發(fā)展中可能被淘汰,如mysql->query(),mysql->connect()等以后可能就無法使用。所以我們要盡量使用PDO和mysqli擴(kuò)展。

PDO

基本操作如下:

?php
// PDO + MySQL
$servername = "localhost";
$username = "username";
$password = "password";
try{
  $pdo = new PDO('mysql:host=$servername;dbname=myDB', '$username',
   '$password');
  echo '連接成功';
}
catch(PDOExcepton $e){
  echo $e->getMessge();
}
$statement = $pdo->query("SELECT some_field FROM some_table");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['some_field']);
// PDO + SQLite
$pdo = new PDO('sqlite:/path/db/foo.sqlite');
$statement = $pdo->query("SELECT some_field FROM some_table");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['some_field']);
//關(guān)閉連接
$pdo=null;

PDO 并不會對 SQL 請求進(jìn)行轉(zhuǎn)換或者模擬實(shí)現(xiàn)并不存在的功能特性;它只是單純地使用相同的 API 連接不同種類的數(shù)據(jù)庫。

更重要的是,PDO 使你能夠安全的插入外部輸入(例如 ID)到你的 SQL 請求中而不必?fù)?dān)心 SQL 注入的問題。這可以通過使用 PDO 語句和限定參數(shù)來實(shí)現(xiàn)。

我們來假設(shè)一個 PHP 腳本接收一個數(shù)字 ID 作為一個請求參數(shù)。這個 ID 應(yīng)該被用來從數(shù)據(jù)庫中取出一條用戶記錄。下面是一個錯誤的做法:

?php
$pdo = new PDO('sqlite:/path/db/users.db');
$pdo->query("SELECT name FROM users WHERE id = " . $_GET['id']); // -- NO!

這是一段糟糕的代碼。你正在插入一個原始的請求參數(shù)到 SQL 請求中。這將讓被黑客輕松地利用[SQL 注入]方式進(jìn)行攻擊。想一下如果黑客將一個構(gòu)造的 id 參數(shù)通過像 http://domain.com/?id=1%3BDELETE+FROM+users 這樣的 URL 傳入。這將會使 $_GET[‘id'] 變量的值被設(shè)為 1;DELETE FROM users 然后被執(zhí)行從而刪除所有的 user 記錄!因此,你應(yīng)該使用 PDO 限制參數(shù)來過濾 ID 輸入。

?php
$pdo = new PDO('sqlite:/path/db/users.db');
$stmt = $pdo->prepare('SELECT name FROM users WHERE id = :id');
$id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT); // -- 首先過濾您的數(shù)據(jù) ,對于INSERT,UPDATE等特別重要
$stmt->bindParam(':id', $id, PDO::PARAM_INT); // -- 通過PDO自動對SQL進(jìn)行清理
$stmt->execute();

這是正確的代碼。它在一條 PDO 語句中使用了一個限制參數(shù)。這將對外部 ID 輸入在發(fā)送給數(shù)據(jù)庫之前進(jìn)行轉(zhuǎn)義來防止?jié)撛诘?SQL 注入攻擊。

對于寫入操作,例如 INSERT 或者 UPDATE,進(jìn)行數(shù)據(jù)過濾并對其他內(nèi)容進(jìn)行清理(去除 HTML 標(biāo)簽,Javascript 等等)是尤其重要的。PDO 只會為 SQL 進(jìn)行清理,并不會為你的應(yīng)用做任何處理。

mysqli擴(kuò)展

mysqli基本操作如下:

?php
$servername = "localhost";
$username = "username";
$password = "password";
// 創(chuàng)建連接
$conn = new mysqli($servername, $username, $password);
// 檢測連接
if ($conn->connect_error) {
  die("連接失敗: " . $conn->connect_error);
} 
echo "連接成功";
?>

注意在以上面向?qū)ο蟮膶?shí)例中 $connect_error 是在 PHP 5.2.9 和 5.3.0 中添加的。如果你需要兼容更早版本 請使用以下代碼替換:

// 檢測連接
if (mysqli_connect_error()) {
  die("數(shù)據(jù)庫連接失敗: " . mysqli_connect_error());
}

數(shù)據(jù)庫交互

ul>
?php
foreach ($db->query('SELECT * FROM table') as $row) {
  echo "li>".$row['field1']." - ".$row['field1']."/li>";
}
?>
/ul>

這從很多方面來看都是錯誤的做法,主要是由于它不易閱讀又難以測試和調(diào)試。而且如果你不加以限制的話,它會輸出非常多的字段。

其實(shí)還有許多不同的解決方案來完成這項(xiàng)工作 — 取決于你傾向于 面向?qū)ο缶幊蹋∣OP)還是函數(shù)式編程 — 但必須有一些分離的元素。

來看一下最基本的做法:

?php
function getAllFoos($db) {
  return $db->query('SELECT * FROM table');
}
foreach (getAllFoos($db) as $row) {
  echo "li>".$row['field1']." - ".$row['field1']."/li>"; 
}

這是一個不錯的開頭。將這兩個元素放入了兩個不同的文件于是你得到了一些干凈的分離。
創(chuàng)建一個類來放置上面的函數(shù),你就得到了一個「Model」。創(chuàng)建一個簡單的.php文件來存放表示邏輯,你就得到了一個「View」。這已經(jīng)很接近 MVC — 一個大多數(shù)框架常用的面向?qū)ο蟮募軜?gòu)。

//foo.php

?php
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');
// 使模板可見
include 'models/FooModel.php';
// 實(shí)例化類
$fooModel = new FooModel($db);
// Get the list of Foos
$fooList = $fooModel->getAllFoos();
// 顯示視圖
include 'views/foo-list.php';

//models/FooModel.php

?php
class FooModel
{
  protected $db;
  public function __construct(PDO $db)
  {
    $this->db = $db;
  }
  public function getAllFoos() {
    return $this->db->query('SELECT * FROM table');
  }
}

//views/foo-list.php

?php foreach ($fooList as $row): ?>
  ?= $row['field1'] ?> - ?= $row['field1'] ?>
?php endforeach ?>

許多框架都提供了自己的數(shù)據(jù)庫抽象層,其中一些是設(shè)計(jì)在 PDO 的上層的。這些抽象層通常將你的請求在 PHP 方法中包裝起來,通過模擬的方式來使你的數(shù)據(jù)庫擁有一些之前不支持的功能。這種抽象是真正的數(shù)據(jù)庫抽象,而不單單只是 PDO 提供的數(shù)據(jù)庫連接抽象。這類抽象的確會增加一定程度的性能開銷,但如果你正在設(shè)計(jì)的應(yīng)用程序需要同時使用 MySQL,PostgreSQL 和 SQLite 時,一點(diǎn)點(diǎn)的額外性能開銷對于代碼整潔度的提高來說還是很值得的。

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP基于pdo操作數(shù)據(jù)庫技巧總結(jié)》、《php+mysqli數(shù)據(jù)庫程序設(shè)計(jì)技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • PHP如何初始化PDO及原始SQL語句操作
  • PHP中PDO關(guān)閉連接的方法問題
  • PHP使用PDO 連接與連接管理操作實(shí)例分析
  • php+pdo實(shí)現(xiàn)的購物車類完整示例
  • PHP使用PDO實(shí)現(xiàn)mysql防注入功能詳解
  • PHP PDO和消息隊(duì)列的個人理解與應(yīng)用實(shí)例分析
  • php pdo連接數(shù)據(jù)庫操作示例
  • PHP使用PDO創(chuàng)建MySQL數(shù)據(jù)庫、表及插入多條數(shù)據(jù)操作示例
  • PHP PDO預(yù)處理語句及事務(wù)的使用

標(biāo)簽:黔東 濮陽 海北 惠州 文山 湘西 廈門 梅河口

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP使用PDO、mysqli擴(kuò)展實(shí)現(xiàn)與數(shù)據(jù)庫交互操作詳解》,本文關(guān)鍵詞  PHP,使用,PDO,mysqli,擴(kuò)展,實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP使用PDO、mysqli擴(kuò)展實(shí)現(xiàn)與數(shù)據(jù)庫交互操作詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP使用PDO、mysqli擴(kuò)展實(shí)現(xiàn)與數(shù)據(jù)庫交互操作詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    成人app网站| 粉嫩高潮美女一区二区三区| 在线观看网站黄不卡| 国产精品久久久久四虎| 精品一区二区三区视频在线观看| 欧美日韩激情一区二区三区| 亚洲精品中文在线观看| 99re6这里只有精品视频在线观看| 欧美国产日本韩| 国产成人一区在线| 国产日韩高清在线| 懂色av中文字幕一区二区三区| 久久久国际精品| 国产精品一区在线| 欧美激情一区二区三区全黄| 成人免费视频caoporn| 欧美国产精品一区| 99国产精品久| 亚洲午夜一区二区| 欧美人与z0zoxxxx视频| 日韩电影在线观看网站| 91精品国产福利| 老司机一区二区| 久久久99精品久久| 丁香网亚洲国际| 自拍偷拍国产精品| 欧美网站一区二区| 日本aⅴ亚洲精品中文乱码| 欧美一区二区三区播放老司机| 蜜臀av一区二区在线观看 | 97精品视频在线观看自产线路二| 国产精品理论片在线观看| 波多野结衣中文一区| 一区二区三区中文字幕| 欧美专区日韩专区| 美国十次了思思久久精品导航| 欧美精品一区二区三区四区| 成人综合婷婷国产精品久久| 亚洲女同ⅹxx女同tv| 欧美日韩一二三| 极品销魂美女一区二区三区| 中文字幕不卡的av| 在线免费不卡视频| 免费在线看成人av| 国产三级精品三级| 在线免费观看日韩欧美| 日本不卡视频一二三区| 久久精品一区二区| 色综合一个色综合亚洲| 在线视频你懂得一区二区三区| 爽好久久久欧美精品| 精品国产乱码久久久久久夜甘婷婷| 国产91精品久久久久久久网曝门 | 欧美成人精品高清在线播放| 成人一区二区三区在线观看| 一区二区三区加勒比av| 日韩欧美精品三级| 不卡视频一二三四| 日韩中文字幕一区二区三区| 国产清纯在线一区二区www| 欧美性猛交xxxx乱大交退制版| 看片网站欧美日韩| 国产精品白丝在线| 欧美一区二区三区免费在线看| 成人激情动漫在线观看| 婷婷久久综合九色综合伊人色| 久久精品亚洲精品国产欧美kt∨ | 国产精品色呦呦| 欧美区视频在线观看| 国产成人午夜视频| 亚洲国产精品视频| 欧美激情艳妇裸体舞| 欧美精选午夜久久久乱码6080| 国产成人av影院| 亚洲成人av资源| 国产精品久久久久婷婷二区次| 欧美一区二区美女| 91网站视频在线观看| 久久66热re国产| 夜夜操天天操亚洲| 国产欧美一区二区精品性| 欧美日韩国产小视频在线观看| 国产成人精品一区二| 日韩av午夜在线观看| 综合久久久久综合| 久久亚洲综合色一区二区三区| 欧美性生活一区| 成人午夜免费视频| 麻豆精品一区二区三区| 一区二区三区蜜桃| 国产精品天天摸av网| 欧美一区二区三区免费观看视频 | 国产成人高清视频| 日本视频一区二区三区| 亚洲精品乱码久久久久久久久| 久久免费视频一区| 欧美一级久久久久久久大片| 欧美性xxxxx极品少妇| 成人午夜在线播放| 欧美电影免费观看高清完整版| 色美美综合视频| 大白屁股一区二区视频| 精品亚洲免费视频| 日本伊人色综合网| 亚洲国产aⅴ天堂久久| **欧美大码日韩| 欧美国产在线观看| 久久一夜天堂av一区二区三区| 日韩一区二区三区av| 欧美日韩亚洲国产综合| 色综合一个色综合亚洲| www.在线成人| 成人自拍视频在线| 高清视频一区二区| 国产一本一道久久香蕉| 久久精品99久久久| 美女任你摸久久| 日本美女一区二区三区视频| 亚洲成人黄色小说| 一区二区三区蜜桃| 一区二区欧美国产| 一区二区在线电影| 玉足女爽爽91| 亚洲另类中文字| 亚洲精品大片www| 尤物视频一区二区| 一区二区三区国产| 一级特黄大欧美久久久| 伊人色综合久久天天| 一区二区成人在线| 亚洲在线观看免费视频| 一区二区三区在线免费| 亚洲另类中文字| 洋洋成人永久网站入口| 亚洲国产综合91精品麻豆| 亚洲午夜在线视频| 日日欢夜夜爽一区| 蜜桃视频在线一区| 精品一区二区三区视频在线观看 | 欧美自拍丝袜亚洲| 欧美日韩小视频| 欧美久久高跟鞋激| 欧美电视剧在线观看完整版| 久久综合久久鬼色中文字| 久久久国产午夜精品| 国产精品久久久久久久久免费相片 | 成人黄色网址在线观看| 99久久国产免费看| 欧美性色综合网| 欧美一区二区三区影视| 日韩欧美一级二级三级| 久久精品视频一区二区三区| 国产精品午夜在线观看| 亚洲欧洲精品一区二区三区| 亚洲六月丁香色婷婷综合久久| 亚洲成人福利片| 久久成人免费电影| 成人性色生活片| 欧洲生活片亚洲生活在线观看| 欧美精品久久天天躁| 337p日本欧洲亚洲大胆精品| 国产精品乱人伦| 亚洲综合色丁香婷婷六月图片| 日韩精品1区2区3区| 国产米奇在线777精品观看| 9色porny自拍视频一区二区| 在线视频欧美精品| 日韩精品一区二区三区老鸭窝| 欧美激情自拍偷拍| 亚洲国产视频直播| 久久99久国产精品黄毛片色诱| 成人理论电影网| 欧美图区在线视频| 欧美大片在线观看一区二区| 国产精品久久久久aaaa| 亚洲尤物视频在线| 精品在线亚洲视频| 99视频国产精品| 717成人午夜免费福利电影| 久久久久久久久久久久电影| 亚洲丝袜自拍清纯另类| 日韩国产欧美在线观看| 国产成人精品亚洲777人妖| 91国在线观看| 精品国产伦一区二区三区观看方式 | 日本一区二区视频在线| 亚洲国产欧美在线| 国产精品一区二区无线| 在线视频国内一区二区| 26uuu精品一区二区三区四区在线| 最新高清无码专区| 青青草原综合久久大伊人精品优势| 国产成人在线观看| 5566中文字幕一区二区电影| 国产精品人妖ts系列视频| 婷婷中文字幕一区三区| 成人丝袜高跟foot| 欧美一区二视频| 亚洲私人黄色宅男| 国产一区二区网址|