SQL 插入和删除逻辑建议

SQL insert and delete logic advice

在表单 post 中,需要删除某些行或需要将新行插入数据库 (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 本身一起插入。

非常感谢您的建议或批评。

请记住,您必须对 ID 进行转义(或确保转换为整数)。正确的语法是:

$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 table 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'); 

我希望在接下来的几天里我能post一个要点github...