首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL INSERT 插入資料完整指南:命令列與 PHP 實作教學

     編輯:MySQL 資料庫相關知識

向 MySQL 資料表寫入資料需使用 INSERT INTO 命令,同樣支援命令列互動模式與 PHP 腳本整合。本文將詳細說明語法規則、字串處理注意事項、命令列多筆插入示範,以及 PHP 表單處理與防注入實務。

INSERT 基礎語法

INSERT INTO table_name (field1, field2,...fieldN) 
VALUES (value1, value2,...valueN);

關鍵規則:字串型欄位的值必須用單引號或雙引號包裹(如 'value')。

命令列實戰:批次新增三筆記錄

root@host# mysql -u root -p password
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> INSERT INTO tutorials_tbl 
->(tutorial_title, tutorial_author, submission_date) 
->VALUES 
->("Learn PHP", "John Poul", NOW());
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO tutorials_tbl 
->(tutorial_title, tutorial_author, submission_date) 
->VALUES 
->("Learn MySQL", "Abdul S", NOW());
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO tutorials_tbl 
->(tutorial_title, tutorial_author, submission_date) 
->VALUES 
->("JAVA Tutorial", "Sanjay", '2007-05-06');
Query OK, 1 row affected (0.01 sec)
mysql>

提示:提示符出現的 -> 箭頭非 SQL 一部分,僅表示換行續行;直到遇到分號 ; 才會執行。
範例中未指定 tutorial_id,因該欄位定義為 AUTO_INCREMENT,MySQL 會自動遞增。NOW() 為取得目前日期時間的內建函式。

PHP 表單處理與資料寫入完整範例

以下程式碼示範透過 HTML 表單接收使用者輸入,經過魔術引號檢查與 addslashes() 轉義後寫入資料庫:

<html>
<head>
<title>Add New Record in MySQL Database</title>
</head>
<body>
<?php
if(isset($_POST['add'])) {
    $dbhost = 'localhost:3036';
    $dbuser = 'root';
    $dbpass = 'rootpassword';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass);
    if(! $conn ) {
        die('Could not connect: ' . mysql_error());
    }
    // 處理魔術引號相容性
    if(! get_magic_quotes_gpc() ) {
        $tutorial_title = addslashes($_POST['tutorial_title']);
        $tutorial_author = addslashes($_POST['tutorial_author']);
    } else {
        $tutorial_title = $_POST['tutorial_title'];
        $tutorial_author = $_POST['tutorial_author'];
    }
    $submission_date = $_POST['submission_date'];
    $sql = "INSERT INTO tutorials_tbl 
            (tutorial_title, tutorial_author, submission_date) 
            VALUES 
            ('$tutorial_title','$tutorial_author','$submission_date')";
    mysql_select_db('TUTORIALS');
    $retval = mysql_query($sql, $conn);
    if(! $retval ) {
        die('Could not enter data: ' . mysql_error());
    }
    echo "Entered data successfully\n";
    mysql_close($conn);
} else {
?>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <table width="600" border="0" cellspacing="1" cellpadding="2">
    <tr>
        <td width="250">Tutorial Title</td>
        <td><input name="tutorial_title" type="text" id="tutorial_title"></td>
    </tr>
    <tr>
        <td width="250">Tutorial Author</td>
        <td><input name="tutorial_author" type="text" id="tutorial_author"></td>
    </tr>
    <tr>
        <td width="250">Submission Date [ yyyy-mm-dd ]</td>
        <td><input name="submission_date" type="text" id="submission_date"></td>
    </tr>
    <tr>
        <td width="250"></td>
        <td><input name="add" type="submit" id="add" value="Add Tutorial"></td>
    </tr>
    </table>
    </form>
<?php } ?>
</body>
</html>

安全性重點

  • 使用 get_magic_quotes_gpc() 檢查 PHP 設定,若關閉則手動呼叫 addslashes() 轉義單引號、雙引號、反斜線與 NUL 字元,降低 SQL 注入風險。
  • 實務上強烈建議改用 Prepared Statements (PDO/MySQLi) 徹底防範注入攻擊。
  • 可額外加入資料驗證邏輯(如日期格式、長度限制),確保寫入資料品質。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved