首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 插入數據全攻略:INSERT 語法、命令行與 PHP 參數化實現

     編輯:MySQL 綜合教學

基礎語法

INSERT INTO table_name (col1, col2, ...) VALUES (val1, val2, ...);
  • 字符串/日期值需用單引號包裹:'value'
  • 指定列名可省略自增主鍵、有默認值的列
  • 列順序與值須一一對應

命令行批量插入示例

mysql> USE TUTORIALS;
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()), ("JAVA Tutorial", "Sanjay", '2007-05-06');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

技巧:單條 INSERT 可寫多組 VALUES,批量插入效率遠高於多條語句。

PHP 安全參數化寫法

<?php
$mysqli = new mysqli('localhost', 'root', 'rootpassword', 'TUTORIALS', 3306);
if ($mysqli->connect_errno) { die('連接失敗: ' . $mysqli->connect_error); }

// 預處理語句,防止 SQL 注入
$stmt = $mysqli->prepare("INSERT INTO tutorials_tbl (tutorial_title, tutorial_author, submission_date) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $title, $author, $date);

// 模擬表單數據
$title = $_POST['tutorial_title'] ?? 'Test Title';
$author = $_POST['tutorial_author'] ?? 'Test Author';
$date = $_POST['submission_date'] ?? date('Y-m-d');

if ($stmt->execute()) {
    echo "插入成功,自增 ID: " . $stmt->insert_id;
} else {
    echo "插入失敗: " . $stmt->error;
}
$stmt->close();
$mysqli->close();
?>

關鍵安全點

  1. 必須使用預處理:prepare() + bind_param() 徹底杜絕 SQL 注入。
  2. 不要拼接字符串:"INSERT ... VALUES ('$title', ...)" 是高危寫法。
  3. 輸入驗證:長度、格式、類型檢查應在綁定參數前完成。
  4. 魔術引號已移除:PHP 5.4+ 移除 get_magic_quotes_gpc(),無需手動 addslashes()。

獲取自增 ID

  • mysqli: $stmt->insert_id 或 $mysqli->insert_id
  • PDO: $pdo->lastInsertId()
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved