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...
在表单 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...