在使用 PHP 進行 Web 開發時,我們通常需要將一些資料儲存在資料庫中以供後續使用。而其中最常用的資料型別就是數組。
接下來,讓我們一起探討如何將陣列存入資料庫。
首先,我們需要建立一張表格來儲存我們的陣列資料。以 MySQL 為例,有以下步驟:
1)建立一個資料庫,例如 test
。
2)在該資料庫下建立一張表,例如 array_data
,用於儲存我們的陣列資料。可以採用以下的 SQL 語句:
CREATE TABLE `array_data` ( `id` int(11) NOT NULL AUTO_INCREMENT, `data` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
該表包含兩個字段,分別是 id
和 data
。其中,id
是主鍵,用於唯一標識一條資料;data
欄位用於儲存我們要儲存的陣列資料。
在將陣列儲存到資料庫之前,我們需要將它轉換為字串。因為資料庫中只能儲存字串類型的資料。將陣列轉換為字串可以使用 PHP 提供的 serialize()
函數。
例如,我們有以下數組資料:
$data = [ 'name' => 'Tom', 'age' => 25, 'gender' => 'male' ];
可以使用serialize()
函數將其轉換為字串:
$data_str = serialize($data);
此時, $data_str
的值為:
a:3:{s:4:"name";s:3:"Tom";s:3:"age";i:25;s:6:"gender";s:4:"male";}
將字串存入資料庫就非常簡單了。我們可以使用 PHP 的 PDO 擴充功能連接到資料庫,然後使用預處理語句將資料寫入資料庫。
具體的程式碼如下:
try { $dsn = "mysql:host=localhost;dbname=test;charset=utf8mb4"; $username = "root"; $password = ""; $pdo = new PDO($dsn, $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $data = [ 'name' => 'Tom', 'age' => 25, 'gender' => 'male' ]; $data_str = serialize($data); $stmt = $pdo->prepare("INSERT INTO array_data (data) VALUES (?)"); $stmt->bindParam(1, $data_str); $stmt->execute(); } catch (PDOException $e) { echo $e->getMessage(); }
以上程式碼中,我們先建立了一個 PDO 對象,然後使用 prepare()
函數來建立一個預處理語句。其中,?
表示目前位置需要一個參數,我們將要儲存的字串作為參數傳入。最後,使用 execute()
函數來執行預處理語句。
在需要讀取資料庫中的陣列資料時,我們可以先從資料庫中讀取儲存的字串,然後使用unserialize()
函數將其轉換為陣列。
具體程式碼如下:
try { $dsn = "mysql:host=localhost;dbname=test;charset=utf8mb4"; $username = "root"; $password = ""; $pdo = new PDO($dsn, $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $pdo->query("SELECT data FROM array_data WHERE id = 1"); $data_str = $stmt->fetchColumn(); $data = unserialize($data_str); print_r($data); } catch (PDOException $e) { echo $e->getMessage(); }
以上程式碼中,我們使用query()
函數來執行SQL 語句,並使用fetchColumn()
函數從結果集中取出第一列數據,即保存我們的陣列數據的字串。然後,使用 unserialize()
函數將其轉換為陣列類型。
最後,使用 print_r()
函數輸出陣列資料。
總結
在PHP 程式中,將陣列存入資料庫通常分為以下步驟:
unserialize()
函數將其轉換為陣列。 以上是php 如何將陣列存入資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!