如何使用PHP來連結mariadb

在PHP中,可以使用PDO (PHP Data Objects)或MySQLi (MySQL Improved Extension)連接資料庫,並進行CRUD (Create, Read, Update, Delete)操作。

使用PDO進行CRUD操作時,可以使用預處理語句和綁定值的方式來防止SQL注入攻擊。

以下是使用PDO進行CRUD操作的示例:

<?php
// 連接資料庫
$dsn = "mysql:host=localhost;dbname=database";
$username = "username";
$password = "password";

$pdo = new PDO($dsn, $username, $password);

// 插入資料
$sql = "INSERT INTO table (column1, column2) VALUES (:value1, :value2)";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':value1', 'value1', PDO::PARAM_STR);
$stmt->bindValue(':value2', 'value2', PDO::PARAM_STR);
$stmt->execute();

// 更新資料
$sql = "UPDATE table SET column1 = :new_value WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':new_value', 'new value', PDO::PARAM_STR);
$stmt->bindValue(':id', 1, PDO::PARAM_INT);
$stmt->execute();

// 刪除資料
$sql = "DELETE FROM table WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':id', 1, PDO::PARAM_INT);
$stmt->execute();

// 查詢資料
$sql = "SELECT column1, column2 FROM table WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':id', 1, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);

echo "column1: " . $result["column1"]. " - column2: " . $result["column2"] . "<br>";

$pdo = null;
?>

將以上範例做成函數可以使您的程式碼更易於管理和重複使用。 例如,可以將連接資料庫的程式碼放在一個名為 connect_db() 的函數中,並將CRUD操作的程式碼放在四個不同的函數中: insert_data()update_data()delete_data()select_data()

以下是將PDO進行CRUD操作的示例做成函數的版本:

<?php
// 連接資料庫
function connect_db() {
    $dsn = "mysql:host=localhost;dbname=database";
    $username = "username";
    $password = "password";

    $pdo = new PDO($dsn, $username, $password);
    return $pdo;
}

// 插入資料
function insert_data($pdo, $value1, $value2) {
    $sql = "INSERT INTO table (column1, column2) VALUES (:value1, :value2)";
    $stmt = $pdo->prepare($sql);
    $stmt->bindValue(':value1', $value1, PDO::PARAM_STR);
    $stmt->bindValue(':value2', $value2, PDO::PARAM_STR);
    $stmt->execute();
}

// 更新資料
function update_data($pdo, $new_value, $id) {
    $sql = "UPDATE table SET column1 = :new_value WHERE id = :id";
    $stmt = $pdo->prepare($sql);
    $stmt->bindValue(':new_value', $new_value, PDO::PARAM_STR);
    $stmt->bindValue(':id', $id, PDO::PARAM_INT);
    $stmt->execute();
}

// 刪除資料
function delete_data($pdo, $id) {
    $sql = "DELETE FROM table WHERE id = :id";
    $stmt = $pdo->prepare($sql);
    $stmt->bindValue(':id', $id, PDO::PARAM_INT);
    $stmt->execute();
}

// 查詢資料
function select_data($pdo, $id) {
    $sql = "SELECT column1, column2 FROM table WHERE id = :id";
    $stmt = $pdo->prepare($sql);
    $stmt->bindValue(':id', $id, PDO::PARAM_INT);
    $stmt->execute();
    $result = $stmt->fetch(PDO::FETCH_ASSOC);
    return $result;
}

$pdo = connect_db();

insert_data($pdo, 'value1', 'value2');
update_data($pdo, 'new value', 1);
delete_data($pdo, 1);
$result = select_data($pdo, 1);
echo "column1: " . $result["column1"]. " - column2: " . $result["column2"] . "<br>";

$pdo = null;
?>

接著就可以在你的程式中,簡單的去呼叫操作。

<?php
$pdo = connect_db();

insert_data($pdo, 'table', 'column1', 'value1', 'column2', 'value2');
update_data($pdo, 'table', 'column1', 'new value', 'id', 1);
delete_data($pdo, 'table', 'id', 1);
$result = select_data($pdo, 'table', 'column1', 'column2', 'id', 1);
if ($result->rowCount() > 0) {
    // 輸出每行的資料
    while($row = $result->fetch(PDO::FETCH_ASSOC)) {
        echo "column1: " . $row["column1"]. " - column2: " . $row["column2"] . "<br>";
    }
} else {
    echo "0 結果";
}

$pdo = null;
?>

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

%d 位部落客按了讚: