:::

4. 用AI來產生表單儲存功能

一、關於PHP的資料庫連線

  1. 填完表單送出後,就準備寫入資料庫了。
  2. 要寫入資料庫,必須先連上資料庫,PHP的MySQL連線方式有 mysqlipdo 兩種方式
    1. mysqli 僅支援MySQL,但其語法和早期的 mysql 系列函數很像,所以,適合舊系統轉換,或者熟悉mysql系列函數者
    2. pdo 則支援十幾種資料庫,因此,若有需要切換資料庫者,這是不二選擇,缺點是性能較 mysqli 差一點。

二、請AI來產生寫入語法

  1. 請輸入以下提示詞:

    請根據上述表單及資料庫欄位來產生PHP 8.2的程式語法:
    將表單送到 admin.php 後
    將所有值以PDO物件用?佔位符的方式,存入上述資料表中,並取得存入的 id 值。
    接著根據 id 值建立 uploads/id/ 文章檔案目錄來存放圖檔
    完成多個檔案上傳至文章檔案目錄的功能,並以檔名為索引,檔案路徑為值,存為 json 格式。
    取得json值後,更新該文章的 media 欄位值

  2. 會產生如下結果:

    <?php
    // 處理檔案上傳
    $uploadDir = 'uploads/'; // 上傳目錄
    
    // 處理表單提交
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        // 取得表單的值
        $title = $_POST['title'];
        $content = $_POST['content'];
        $author = $_POST['author'];
        $date = $_POST['date'];
        $category = $_POST['category'];
    
        // 建立資料庫連接
        $dsn = 'mysql:host=localhost;dbname=your_database;charset=utf8mb4';
        $username = 'your_username';
        $password = 'your_password';
    
        try {
            $pdo = new PDO($dsn, $username, $password);
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
            // 準備SQL語句
            $sql = "INSERT INTO news (title, content, author, date, category) VALUES (?, ?, ?, ?, ?)";
    
            // 預備語句
            $stmt = $pdo->prepare($sql);
    
            // 綁定參數並執行語句
            $stmt->execute([$title, $content, $author, $date, $category]);
    
            // 取得插入的資料行數
            $rowCount = $stmt->rowCount();
    
            if ($rowCount > 0) {
                // 取得插入的 id 值
                $lastInsertId = $pdo->lastInsertId();
    
                // 建立存放圖檔的目錄
                $articleDir = $uploadDir . $lastInsertId . '/';
                if (!file_exists($articleDir)) {
                    mkdir($articleDir, 0777, true);
                }
    
                // 處理多檔案上傳
                if (!empty($_FILES['media'])) {
                    $fileData = array();
    
                    foreach ($_FILES['media']['name'] as $index => $fileName) {
                        $fileTmpName = $_FILES['media']['tmp_name'][$index];
                        $fileDestination = $articleDir . $fileName;
    
                        // 將檔案移動到文章檔案目錄
                        move_uploaded_file($fileTmpName, $fileDestination);
    
                        // 將檔案路徑存入陣列
                        $fileData[$fileName] = $fileDestination;
                    }
    
                    // 將檔案相關資訊轉換為JSON格式
                    $media = json_encode($fileData);
    
                    // 更新該文章的 media 欄位值
                    $updateSql = "UPDATE news SET media = ? WHERE id = ?";
                    $updateStmt = $pdo->prepare($updateSql);
                    $updateStmt->execute([$media, $lastInsertId]);
                }
    
                echo "資料插入成功!";
            } else {
                echo "資料插入失敗!";
            }
        } catch (PDOException $e) {
            echo "資料庫連接錯誤:" . $e->getMessage();
        }
    }
    

    基本上已經差不多相當完整,我們稍加調整即可,所以,先建立一個新檔,貼上以上語法,存為 admin.php 即可。

  3. 每次產生結果可能都不太一樣,不過,大致可以分為幾大部份:

    1. 過濾存入變數

    2. 指定並建立上傳目錄

    3. 連線資料庫

    4. 寫入資料庫


:::

書籍目錄

展開 | 闔起

http%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbsn%3D52%26tbdsn%3D1798

計數器

今天: 2721272127212721
昨天: 4745474547454745
總計: 7712682771268277126827712682771268277126827712682