在專案開發中,重複撰寫 INSERT、UPDATE、DELETE、SELECT 語句不僅繁瑣且易出錯。本文介紹一個 MyLibSQLGen 類別,透過設定資料表、欄位、數值、條件等參數,自動產生標準 SQL 語句,支援 LEFT JOIN、ORDER BY、LIKE 搜尋等進階功能,大幅提升開發效率與程式碼可維護性。
PASSWORD())與數值型別不加引號require_once("class_mylib_SQLGen-1.0.php");
$obj = new MyLibSQLGen();
// --- INSERT ---
$obj->clear_all_assign();
$obj->setFields(['name','address','city']);
$obj->setValues(['Fadjar','Resultmang Raya Street','Jakarta']);
$obj->setTables(['customer']);
$obj->getInsertSQL();
echo $obj->Result; // INSERT INTO customer (name,address,city) VALUES ('Fadjar','Resultmang Raya Street','Jakarta')
// --- UPDATE ---
$obj->clear_all_assign();
$obj->setFields(['name','address','city']);
$obj->setValues(['Fadjar','Resultmang Raya Street','Jakarta']);
$obj->setTables(['customer']);
$obj->setConditions([['condition'=>"id='1'", 'connection'=>'']]);
$obj->getUpdateSQL();
echo $obj->Result; // UPDATE customer SET name='Fadjar',address='Resultmang Raya Street',city='Jakarta' WHERE id='1'
// --- DELETE ---
$obj->clear_all_assign();
$obj->setTables(['customer']);
$obj->setConditions([
['condition'=>"id='1'", 'connection'=>'OR'],
['condition'=>"id='2'", 'connection'=>'OR'],
['condition'=>"id='4'", 'connection'=>'']
]);
$obj->getDeleteSQL();
echo $obj->Result; // DELETE FROM customer WHERE id='1' OR id='2' OR id='4'
// --- SELECT (含搜尋) ---
$obj->clear_all_assign();
$obj->setFields(['id','name','address','city']);
$obj->setTables(['customer']);
$obj->setSearch(['name'=>'Fadjar Nurswanto','address'=>'Tomang Raya']); // 指定欄位搜尋
$obj->getQuerySQL();
echo $obj->Result; // SELECT id,name,address,city FROM customer WHERE (name LIKE '%Fadjar%' OR name LIKE '%Nurswanto%') AND (address LIKE '%Tomang%' OR address LIKE '%Raya%')
完整類別碼約 400 行,核心方法包括:
CombineFieldValue():將欄位與數值陣列組合成 SQL 片段,自動判斷型別與密碼加密BuildCondition():依 Conditions 陣列產生 WHERE 子句BuildLeftJoin():解析 LeftJoin 陣列產生 JOIN 子句BuildSearch():支援字串或關聯陣列兩種搜尋模式,產生 LIKE 條件BuildOrder():依 Order 索引對應 Fields 產生 ORDER BYclear_all_assign():重置所有屬性,避免多次呼叫時資料殘留mysqli_real_escape_string 或改用 PDO Prepared Statements。BuildSearch() 以支援更複雜的全文搜尋邏輯。掌握此工具類,能讓資料庫操作程式碼更乾淨、一致,減少手寫 SQL 的拼字錯誤風險。