日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP 入门 - 8.数据库

發布時間:2024/1/17 php 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP 入门 - 8.数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 訪問數據庫
    • PDO ( PHP 數據對象)
      • 連接
      • 數據庫交互
      • 預處理語句
      • 事務
    • MySQLi
      • 連接
      • 數據庫交互
    • 文件操作
    • NoSQL

訪問數據庫

在 PHP 中訪問數據有兩種方法:

  • 使用數據庫特定的拓展
  • 使用不受數據庫約束的 PDO ( PHP 數據對象)庫

如果使用數據庫特定的擴展,你的代碼會和你所使用的數據庫密切相關。也就是說你先把數據庫從 MySQL 遷移到 PostgreSQL ,會引起代碼的重大改動。而 PDO ,用一個抽象層為你隱藏了數據庫特定的函數,因此在數據庫系統間進行遷移,改變程序或 php.ini 文件中的一行代碼這么簡單。但是這種可移植性也是有代價的。使用 PDO 的代碼會比使用原生數據庫特定擴展的代碼在執行速度上慢一點。

需要注意的是,抽象層并不能保證你的 SQL 語句是真正可移植的。如果你的應用使用了任何非泛型的 SQL ,那么在數據庫遷移時你不得不對 SQL 語句進行重大改造。

PDO ( PHP 數據對象)

連接

$db = new PDO($dsn, $username, $password);$db = new PDO("mysql:host=localhost;bdname=text", "username", "password");

數據庫交互

使用 query() 函數

$db = new PDO("mysql:host=localhost;dbname=laravelblog", 'root', 'root');$result = $db->query("select * from users");foreach($result as $row){print_r($row); }$result = null; // 釋放結果集對象

預處理語句

先使用預處理函數 prepare() ,在運行執行函數 execute() 。

$db = new PDO("mysql:host=localhost;dbname=laravelblog", 'root', 'root');$result = $db->prepare("select * from users"); $result->execute();while ($row = $result->fetch()) {print_r($row); }$result = null; // 釋放結果集對象

利用占位符來進行重復插入

$db = new PDO("mysql:host=localhost;dbname=laravelblog", 'root', 'root');$statement = $db->prepare("insert into posts (title, body) values (:title, :body)"); $statement->execute(['title' => 'What is PHP?','body' => 'best language' ]);$db = null;

也可以使用位置占位符(不命名),用 ? 標志。

$db = new PDO("mysql:host=localhost;dbname=laravelblog", 'root', 'root');$statement = $db->prepare("insert into posts (title, body) values (?, ?)"); $statement->execute(['What is PHP?', 'best language']);$db = null;

事務

使用函數 beginTransaction() 開始事務, commit() 提交事務, rollback() 取消事務。

try {$db = new PDO("mysql:host=localhost;dbname=laravelblog", 'root', 'root');echo "Connected\n"; } catch (Exception $e) {die("Unable to connect: " . $e->getMessage()); }try { $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);$dbh->beginTransaction();$dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");$dbh->exec("insert into salarychange (id, amount, changedate) values (23, 50000, NOW())");$dbh->commit();} catch (Exception $e) {$dbh->rollBack();echo "Failed: " . $e->getMessage(); }

MySQLi

MySQLi , MySQL 改進擴展( MySQL Improved )。

連接

$db = new mysqli(host, user, password, databaseName);$db = new mysqli("localhost", "root", "root", "laravelblog");

數據庫交互

$db = new mysqli("localhost", "root", "root", "laravelblog");$sql = "select * from users"; $result = $db->query($sql);while ($row = $result->fetch_assoc()) {print_r($row); }$result->close(); $db->close();

文件操作

當我們不想使用數據庫時,我們可以用文件代替它。但是功能有限。

首先我們來看一下 PHP 文件管理常用函數

函數名使用說明
mkdir()用來在服務器上創建目錄
file_exits()用來檢測指定位置的文件或目錄是否存在
fopen()用來打開存在的文件用來讀或寫
fread()用來讀取文件內容到一個 PHP 使用的變量
flock()用來獲得文件的獨占寫鎖
fwrite()用來將變量中的內容寫入到文件中
filesize()當讀取文件時,這個用來檢測一次需要讀取的字節數
fclose()用來當文件的實用性已經過去時,關閉文件

fopen() 中的參數

參數說明
r只讀方式打開,將文件指針指向文件頭
r+讀寫方式打開,將文件指針指向文件頭
w寫入方式打開,將文件指針指向文件頭并將文件大小截為零,如果文件不存在則嘗試創建之
w+讀寫方式打開,將文件指針指向文件頭并將文件大小截為零,如果文件不存在則嘗試創建之
a寫入方式打開,將文件指針指向文件末尾進行寫入,如果文件不存在則嘗試創建之
a+讀寫方式打開,通過將文件指針指向文件末尾進行寫入來保存文件內容
x創建一個新的文件并以寫入方式打開,如果文件已存在則返回 FALSE 和一個錯誤
x+建一個新的文件并以讀寫方式打開,如果文件已存在則返回 FALSE 和一個錯誤

下面我會利用 PHP 的文件操作來創建一個動態頁面。類似一個問卷調查的形式。

首先要通過唯一標識來區別用戶,這里我們假定個人郵箱是唯一的(這樣并不安全)。我們一旦獲取用戶的電子郵件地址,需要把信息存在在一個對每個訪問者不同的位置。為此,我們為每個訪問者在服務器上創建目錄文件夾。

<?php session_start();if (!empty($_POST['posted']) && !empty($_POST['email'])) {$folder = "surveys/" . strtolower($_POST['email']);//向會話發送路徑消息$_SESSION['folder'] = $folder;if (!file_exists($folder)) {//創建目錄并添加文件mkdir($folder, 0777, true);}header("Location: 08_6.php"); } else { ?><!DOCTYPE html><head><title>Files & folders - On-line Survey</title></head><body bgcolor="white" text="black"><h2>Survey Form</h2><p>Please enter your e-mail address to start recording your comments</p><form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST"><input type="hidden" name="posted" value="1"><p>Email address: <input type="text" name="email" size="45" /><br /><input type="submit" value="Submit" name="submit"></p></form></body></html> <?php } ?>

向通過電子郵箱創建目錄,進而進行問卷調查。

<?php session_start(); $folder = $_SESSION['folder']; $filename = $folder . "/question.txt";$file_handle = fopen($filename, "a+"); //向判斷文件中是否有數據 if (filesize($filename) > 0) {//獲取文件中已存在的任何文本$comments = fread($file_handle, filesize($filename)); } else {$comments = ''; } fclose($file_handle); if (!empty($_POST['posted'])) {//首次訪問創建文件,然后存儲 $_POST['question']中的文本$question = $_POST['question'];$file_handle = fopen($filename, "w+");if (flock($file_handle, LOCK_EX)) {if (fwrite($file_handle, $question) == false) {echo "Cannot write to file {$filename}";}flock($file_handle, LOCK_UN);}fclose($file_handle);header("Location: thank_your.php"); } else { ?><!DOCTYPE html><head><title>Files & folders - On-line Survey</title></head><body><table border="0"><tr><td>Please enter your response to the following survey question:</td></tr><tr bgcolor="red"><td>What is your opinion on the state of the world economy><br />Can you help us fix it ?</td></tr><tr><td><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"><input type="hidden" name="posted" value="1"> <br /><textarea name="question" cols="35" rows="12"><?php echo $comments ?></textarea><input type="submit" name="submit" value="Submit"></form></td></tr></table></body></html> <?php } ?>

調查開始,通過表單來提交到 PHP ,進而創建相應文件。如果文件中存在數據,則打印到對應的 <textarea> 中。這里還可以繼續往后面寫問卷調查,要注意的是一對一,也就是一個問題一個文件。

在提交表單這里,使用了獨占鎖,則保證當操作它時,沒有其他進程范圍這個文件。這里最后我重定向到了感謝頁面,表示調查的結束。

NoSQL

NoSQL , Not Only SQL 。 這里重點介紹 MongoDB 。

在 PHP 7+ 中, MongoDB 與之前的不太一樣,首先要去 這個網站 下載 MongoDB 的擴展。對應的就是 php_mongodb.dll 。下載到的是一個壓縮包,解壓之后,將里面的 php_mongodb.dll 文件放入你的 PHP 目錄下的 ext 文件中。最后在 php.ini 文件中寫下 extension=php_mongodb.dll 重啟服務器就行了。

這里演示一下插入數據(要保證 MongoDB 在運行中):

$bulk = new MongoDB\Driver\BulkWrite; $author1 = ['authorid' => 1, 'name' => 'J.R.R. Tolkien']; $bulk->insert($author1); $author2 = ['authorid' => 2, 'name' => 'Alex Haley']; $bulk->insert($author2); $author3 = ['authorid' => 3, 'name' => 'Tom Clancy']; $bulk->insert($author3); $author4 = ['authorid' => 4, 'name' => 'Isaac Asimov']; $bulk->insert($author4);$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000); $result = $manager->executeBulkWrite('test.authors', $bulk, $writeConcern);

更多的操作可以看這篇文章:php7的mongodb基本用法

感謝你看到了這里。如果文章有錯誤,請評論指正,謝謝!

總結

以上是生活随笔為你收集整理的PHP 入门 - 8.数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。