在表單發布中,需要刪除某些行或需要將新行插入到數據庫(mysql)中。我擁有的:$toInsert = array() // array of ID's where new rows need to be created because these ID's dont exist in any row.$toDelete = array() // array of ID's where rows containing this ID need to be deleted.刪除sql查詢:$sql = DELETE FROM table WHERE id IN ' . implode(',',$toDelete);查詢刪除包含此 ID 的所有行。我怎樣才能做同樣的事情,但使用插入?某些默認值需要與 ID 本身一起插入。非常感謝您的建議或批評。
1 回答

紫衣仙女
TA貢獻1839條經驗 獲得超15個贊
請記住,您必須對 ids 進行轉義(或確保轉換為整數)。正確的語法是:
$q_delete_ids = implode(', ', array_map('intval', $toDelete)); $sql = " DELETE FROM table WHERE id IN ($q_delete_ids) ";
應開發一個通用函數,在其中引用任何值并與 array_map 一起使用。
例如,帶有一個虛構的數據庫對象的代碼,該對象具有 escape() 方法(類似于addslashes(),但對于數據庫引擎來說更安全,并避免隨機排序問題......)
public function quoteSurround($val) { return "'" . $this-db->escape($val) . "'"; }
現在,對于插入,應該開發一個通用方法,例如傳遞一個包含 db 所有列的數組(如果您錯過了某些列,請確保 mysql 表 DDL 中有默認值)。
本質上,您應該開發一個函數來創建并執行一個 sql 字符串,例如
INSERT INTO table (col1, col2, col3) VALUES (1, 'test1', '2000-01-01'), (2, 'test2', '2000-02-02'), (3, 'test3', '2000-03-03'), (4, 'test4', '2000-04-04'), (5, 'test5', '2000-05-05');
我希望我能在接下來的幾天里將要點發布到 github 上......
- 1 回答
- 0 關注
- 132 瀏覽
添加回答
舉報
0/150
提交
取消