如何使用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;
?>