亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQL插入和刪除邏輯建議

SQL插入和刪除邏輯建議

PHP
嚕嚕噠 2023-10-15 16:38:32
在表單發布中,需要刪除某些行或需要將新行插入到數據庫(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 上......


查看完整回答
反對 回復 2023-10-15
  • 1 回答
  • 0 關注
  • 132 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號