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

PHP INSERT 語法詳解:VALUES 子句與引號處理規則

     編輯:PHP 綜合知識

SQL INSERT 語法核心解析

釐清 INSERT 語法結構,特別是 VALUES 子句中值的引號處理規則,避免語法錯誤與資料型別不符。

標準 INSERT 語法

INSERT INTO 資料表 (欄位1, 欄位2, ...) VALUES ("值1", "值2", ...)

PHP 組裝 INSERT 範例

$exec = "INSERT INTO info (ename, pcname) VALUES ('" . $_POST["ename"] . "', '" . $_POST["pcname"] . "')";

引號處理關鍵規則

欄位型別VALUES 中寫法說明
VARCHAR, CHAR, TEXT'字串值'**必須用單引號包裹**
INT, BIGINT123**不可加引號**,否則隱含型別轉換
FLOAT, DOUBLE, DECIMAL12.34**不可加引號**
DATE, DATETIME, TIMESTAMP'2024-01-15'**需單引號**,格式符合 MySQL 標準
NULLNULL不加引號,關鍵字大小寫不敏感

常見錯誤與修正

-- 錯誤:數值欄位加了引號
INSERT INTO products (price) VALUES ('99.90');  -- 隱含轉換,效能差且易出錯

-- 正確:
INSERT INTO products (price) VALUES (99.90);

-- 錯誤:字串未加引號
INSERT INTO users (name) VALUES (John);  -- 語法錯誤

-- 正確:
INSERT INTO users (name) VALUES ('John');

PHP 中正確組裝的最佳實務

不要手動拼接字串,改用預處理語句:

<?php
$pdo = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", "pwd");
$stmt = $pdo->prepare("INSERT INTO info (ename, pcname) VALUES (?, ?)");
$stmt->execute([$_POST['ename'], $_POST['pcname']]);
// PDO 自動處理型別、引號、跳脫,安全且正確
?>

多筆資料批次插入

INSERT INTO info (ename, pcname) VALUES 
('Alice', 'PC001'),
('Bob', 'PC002'),
('Charlie', 'PC003');

批次插入比迴圈單筆插入快數十倍,大量資料匯入必用。

INSERT ... ON DUPLICATE KEY UPDATE (upsert)

INSERT INTO stats (date, views) VALUES ('2024-01-15', 1)
ON DUPLICATE KEY UPDATE views = views + 1;

主鍵/唯一鍵衝突時執行更新,適合計數器、統計表。

掌握 INSERT 語法細節,配合 PDO 預處理,能寫出正確、安全、高效的資料寫入程式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved