您現在的位置是:電腦技術吧?>? 故障問題 ??>??php 數據庫,php對mysql進行增刪??>??正文詳情

php 數據庫,php對mysql進行增刪

佼思萌2019-12-12 23:42:09 人圍觀
簡介最簡單的php查詢數據庫PDO是MySQL數據庫操作的一個公共類。我們可以直接使用PDO操作數據庫,而不必定義類。但是,在PHP默認配置中沒有啟用PDO,因此在使用它之前,必須在PHPphp關閉數據

PDO是mysql數據庫操作的一個公用類了,我們不需要進行自定類就可以直接使用pdo來操作數據庫了,但是在php默認配置中pdo是未開啟所以我們必須先在php.ini中開啟它才可以使用。

  需要開啟php的pdo支持,php5.1以上版本支持  實現數據庫連接單例化,有三要素 靜態變量、靜態實例化方法、私有構造函數 DPDO.php  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 class DPDO{ private $DSN; private $DBUser; private $DBPwd; private $longLink; private $pdo; //私有構造函數 防止被直接實例化 private function __construct($dsn, $DBUser, $DBPwd, $longLink = false) { $this-DSN = $dsn; $this-DBUser = $DBUser; $this-DBPwd = $DBPwd; $this-longLink = $longLink; $this-connect(); } //私有 空克隆函數 防止被克隆 private function __clone(){} //靜態 實例化函數 返回一個pdo對象 static public function instance($dsn, $DBUser, $DBPwd, $longLink = false){ static $singleton = array();//靜態函數 用于存儲實例化對象 $singIndex = md5($dsn . $DBUser . $DBPwd . $longLink); if (empty($singleton[$singIndex])) { $singleton[$singIndex] = new self($dsn, $DBUser, $DBPwd, $longLink = false); } return $singleton[$singIndex]-pdo; } private function connect(){ try{ if($this-longLink){ $this-pdo = new PDO($this-DSN, $this-DBUser, $this-DBPwd, array(PDO::ATTR_PERSISTENT = true)); }else{ $this-pdo = new PDO($this-DSN, $this-DBUser, $this-DBPwd); } $this-pdo-query('SET NAMES UTF-8'); } catch(PDOException $e) { die('Error:' . $e-getMessage() . 'br/'); } } }   用于處理字段映射,使用pdo的字段映射,可以有效避免sql注入  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 //字段關聯數組處理, 主要用于寫入和更新數據、同and 或 or 的查詢條件,產生sql語句和映射字段的數組 public function FDFields($data, $link = ',', $judge = array(), $aliasTable = ''){ $sql = ''; $mapData = array(); foreach($data as $key = $value) { $mapIndex = ':' . ($link != ',' ? 'c' : '') . $aliasTable . $key; $sql .= ' ' . ($aliasTable ? $aliasTable . '.' : '') . '`' . $key . '` ' . ($judge[$key] ? $judge[$key] : '=') . ' ' . $mapIndex . ' ' . $link; $mapData[$mapIndex] = $value; } $sql = trim($sql, $link); return array($sql, $mapData); } //用于處理單個字段處理 public function FDField($field, $value, $judge = '=', $preMap = 'cn', $aliasTable = '') { $mapIndex = ':' . $preMap . $aliasTable . $field; $sql = ' ' . ($aliasTable ? $aliasTable . '.' : '') . '`' . $field . '`' . $judge . $mapIndex; $mapData[$mapIndex] = $value; return array($sql, $mapData); } //使用剛方法可以便捷產生查詢條件及對應數據數組 public function FDCondition($condition, $mapData) { if(is_string($condition)) { $where = $condition; } else if (is_array($condition)) { if($condition['str']) { if (is_string($condition['str'])) { $where = $condition['str']; } else { return false; } } if(is_array($condition['data'])) { $link = $condition['link'] ? $condition['link'] : 'and'; list($conSql, $mapConData) = $this-FDFields($condition['data'], $link, $condition['judge']); if ($conSql) { $where .= ($where ? ' ' . $link : '') . $conSql; $mapData = array_merge($mapData, $mapConData); } } } return array($where, $mapData); }   增刪改查的具體實現DB.php  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 public function fetch($sql, $searchData = array(), $dataMode = PDO::FETCH_ASSOC, $preType = array(PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY)) { if ($sql) { $sql .= ' limit 1'; $pdoStatement = $this-pdo-prepare($sql, $preType); $pdoStatement-execute($searchData); return $data = $pdoStatement-fetch($dataMode); } else { return false; } } public function fetchAll($sql, $searchData = array(), $limit = array(0, 10), $dataMode = PDO::FETCH_ASSOC, $preType = array(PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY)) { if ($sql) { $sql .= ' limit ' . (int) $limit[0] . ',' . (intval($limit[1]) 0 ? intval($limit[1]) : 10); $pdoStatement = $this-pdo-prepare($sql, $preType); $pdoStatement-execute($searchData); return $data = $pdoStatement-fetchAll($dataMode); } else { return false; } } public function insert($tableName, $data, $returnInsertId = false, $replace = false) { if(!empty($tableName) count($data) 0){ $sql = $replace ? 'REPLACE INTO ' : 'INSERT INTO '; list($setSql, $mapData) = $this-FDFields($data); $sql .= $tableName . ' set ' . $setSql; $pdoStatement = $this-pdo-prepare($sql, array(PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY)); $execRet = $pdoStatement-execute($mapData); return $execRet ? ($returnInsertId ? $this-pdo-lastInsertId() : $execRet) : false; } else { return false; } } public function update($tableName, $data, $condition, $mapData = array(), $returnRowCount = true) { if(!empty($tableName) count($data) 0) { $sql = 'UPDATE ' . $tableName . ' SET '; list($setSql, $mapSetData) = $this-FDFields($data); $sql .= $setSql; $mapData = array_merge($mapData, $mapSetData); list($where, $mapData) = $this-FDCondition($condition, $mapData); $sql .= $where ? ' WHERE ' . $where : ''; $pdoStatement = $this-pdo-prepare($sql, array(PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY)); $execRet = $pdoStatement-execute($mapData); return $execRet ? ($returnRowCount ? $pdoStatement-rowCount() : $execRet) : false; } else { return false; } } public function delete($tableName, $condition, $mapData = array()) { if(!empty($tableName) $condition){ $sql = 'DELETE FROM ' . $tableName; list($where, $mapData) = $this-FDCondition($condition, $mapData); $sql .= $where ? ' WHERE ' . $where : ''; $pdoStatement = $this-pdo-prepare($sql, array(PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY)); $execRet = $pdoStatement-execute($mapData); return $execRet; } }   測試文件test.php  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 header(Content-type: text/html; charset=utf-8); define('APP_DIR', dirname(__FILE__)); if (function_exists('spl_autoload_register')) { spl_autoload_register('autoClass'); } else { function __auto_load($className){ autoClass($className); } } function autoClass($className){ try{ require_once APP_DIR.'/class/'.$className.'.php'; } catch (Exception $e) { die('Error:' . $e-getMessage() . 'br /'); } } $DB = new DB(); //插入 $inData['a'] = rand(1, 100); $inData['b'] = rand(1, 1000); $inData['c'] = rand(1,200) . '.' . rand(1,100); $ret = $DB-insert('a', $inData); echo '插入' . ($ret ? '成功' : '失敗') . 'br/'; //更新 $upConData['a'] = 100; $upConJudge['a'] = ''; $upConData['b'] = 30; $upConJudge['b'] = ''; list($upConStr, $mapUpConData) = $DB-FDField('b', 200, '', 'gt'); $condition = array( 'str' = $upConStr, 'data' = $upConData, 'judge' = $upConJudge, 'link' = 'and' ); $upData['a'] = rand(1, 10); $upData['b'] = 1; $upData['c'] = 1.00; $changeRows = $DB-update('a', $upData, $condition, $mapUpConData); echo '更新行數:' . (int) $changeRows . 'br/'; //刪除 $delVal = rand(1, 10); list($delCon, $mapDelCon) = $DB-FDField('a', $delVal); $delRet = $DB-delete('a', $delCon, $mapDelCon); echo '刪除a=' . $delVal . ($delRet ? '成功' : '失敗') . 'br/'; //查詢 $data['a'] = '10'; $judge['a'] = ''; $data['b'] = '400'; $judge['b'] = ''; list($conSql, $mapConData) = $DB-FDFields($data, 'and', $judge); $mData = $DB-fetch('select * from a where ' . $conSql . ' order by `a` desc', $mapConData); var_dump($mData);   以上所述就是本文的全部內容了,希望大家能夠喜歡。

版權聲明:本文由 佼思萌 整理編輯。

原標題:php請求數據庫,php數據庫開發

轉載注明出處:http://www.dn9ww09s.icu/fault/15384.html

文章評論

    共有條評論來說兩句吧...

    用戶名:

    驗證碼:

作者推薦

  • asp網站代碼,簡單的webasp

    asp網站代碼,簡單的webasp 相關圖片站內短信 asp源碼!--吡含含含asp 開發...

  • ajax sqlserver,jquerysql注入

    ajax sqlserver,jquerysql注入 相關圖片jsp防止sql注入本文主要介紹了asp.net Ajax SQL Server的自動完成功能。對于您的朋友,請參考下面的代碼下載說明:數據庫連接字符串在web.config文件中sql有什么用...

  • 循環增加json節點,識別json節點數量

    循環增加json節點,識別json節點數量 相關圖片java遍歷json我們之前已經解釋了使用JavaScript獲取JSON數據節點路徑的問題。今天我們將更進一步。我們來談談如何通過PHP獲取JSON數據的所有節點路徑?12345c# json...

  • asp導出excel,asp導出到excel

    asp導出excel,asp導出到excel 相關圖片asp導出exl本文主要介紹了asp.net導出excel的簡單方法實例。你可以給你的朋友參考Excel的操作。最常用的方法是導出和導入。關于密碼沒有太多的胡說八道。這個例子是aspose導出excel亂碼...

  • 這件事使我苦惱,什么使我煩惱

    這件事使我苦惱,什么使我煩惱 相關圖片考試使我苦惱作文450PHP編程中的中文編碼問題一直困擾著許多人。這個問題的原因很簡單。每個國家(地區)都規定了計算機信息交換的字符編碼集,如美國的擴展ASCII碼、中國的GB231最...

  • artifact在線人數,全球在線人數最多的游戲

    artifact在線人數,全球在線人數最多的游戲 相關圖片在線人數最多的網友Global.asa是一個文本文件,可以找到您的主目錄(/Global.asa)。Lou將基本結構顯示為global.as a文件。global.asa腳本語言騰訊在線人數提前...

  • querystring傳值,parsequerystring

    querystring傳值,parsequerystring 相關圖片vuequerystring當您從HTML表單傳遞信息時,使用get方法從ASP頁面處理它,并且您可以使用ASP的querystring集合檢索數據。在過去,我們創建tizagform.hquerystringpost...

  • ASP入門,asp詳細教程

    ASP入門,asp詳細教程 相關圖片asp建站教程ASP-cookies教程是用來記錄用戶瀏覽等信息的,但cookies只能將信息保存到客戶端,而且不安全。許多簡單的投票使用cookies。在同一個ASP會話中簡單ASP網頁...

  • aspnet文件上傳,asp上傳文件

    aspnet文件上傳,asp上傳文件 相關圖片asp上傳文件保存Asp.net依賴于。Net framework類庫封裝了很多函數,使得上傳文件變得非常簡單。有三種基本方法。您可以參考以下方法為您的朋友:使用web控件文件上asp上傳文字源碼...

  • asp獲取xml,xmlpost請求asp

    asp獲取xml,xmlpost請求asp 相關圖片api返回xml格式本文主要介紹了asp.net操作中XML的添加、刪除和修改的實例。以下代碼可由所需的朋友參考:使用系統;使用系統。收集;使用系統。組件模型;使用系統Js加載xml跨域...

熱評文章

  • asp生成文件夾,asp文件夾瀏覽

    asp生成文件夾,asp文件夾瀏覽 相關圖片asp.netmvc文件夾%設置FSO=Server.CreateObject(Scripting.FileSystemObject)設置服務器文件夾=FSO.GetFolder(Sernet文件夾...

  • asp連數據庫,asp與數據庫

    asp連數據庫,asp與數據庫 相關圖片asp訪問數據庫過程本文主要介紹了asp.net數據庫備份與恢復的方法示例,需要的朋友可以參考以下代碼:/*************************************net讀取數據庫...

  • 四精度浮點數,浮點數的精度由

    四精度浮點數,浮點數的精度由 相關圖片雙精度浮點數本文主要介紹PHP浮點精度問題的綜述。本文主要研究PHP浮點精度損失問題。它從三個不同的方面解釋了這個問題的原因和解決方法。對于您的朋友,請參閱下一節,PHP浮浮...

  • Java常用框架,常用的web開發框架

    Java常用框架,常用的web開發框架 相關圖片android框架自從接觸到PHP開發以來,已經使用了許多框架。雖然沒有對每個框架進行深入的研究,但是對使用的每個PHP框架函數都有一定的了解。在這一點上,我將把一些常用的PHP常見的...

  • deleteinsert,update和insert

    deleteinsert,update和insert 相關圖片電腦insert是什么意思本教程是對ASP的介紹。主要介紹了ASP訪問插入更新刪除的簡單使用。好的,我們把它們寫進一個函數中,并給出一個例子。函數add_del_update(tableinsert鎖表嗎...

  • asp制作網站,asp制作網站教程

    asp制作網站,asp制作網站教程 相關圖片做網頁用asp純ASP創建的日歷程序,可以美化自己,這里只提供最簡單的CSS樣式。。。樣式體{字體大小:12px;邊距:20px 0 0 20px;填充:0}tr,td{文本asp編寫工具...

  • php7,php實例

    php7,php實例 相關圖片php socket本文通過一個實例說明PHP如何自動地改變每天的隨機問候語。與您分享以供參考。具體分析如下:這里預先定義了一個PHP數組,其中存儲了一些隨機的問候語。打電話時,它php消...

  • c 字符串長度,字符串長度怎么數

    c  字符串長度,字符串長度怎么數 相關圖片字符串比較大小SP judge中西方混合字符串的長度==================函數名:string length action:judge string lengtjava字符串長度...

  • kafkastream函數,stringstream的用法

    kafkastream函數,stringstream的用法 相關圖片stream groupby本文主要介紹PHP stream﹣context﹣create()函數的使用示例。Stream﹣context﹣create()函數用于創建打開文件的上下文件選stringstream頭文件...

  • 用流,免流如何使用

    用流,免流如何使用 相關圖片幽諾每次使用后全流出來本文主要介紹PHP流的詳細介紹和使用。phpstream是一個內置的核心操作,普通開發人員很少使用它。它用于統一文件、網絡、數據壓縮等類文件操作,并為這些類...

關注微信

变脸官网查询