php - 没有变量的php mysql插入查询
问题描述
我一直写 2 个函数……例如,一个用于插入,一个用于编辑
添加:
function add_bank($vars = array()) {
$sql = "INSERT INTO BANK (Name, Var1, Var2, ...., Var7) VALUES (?, ?, ?, ..., ?)";
$name = isset($vars[Name]) ? $vars[Name] : "";
...
$var7= isset($vars[Var7]) ? $vars[Var7] : "";
$rs = $db->prepare($sql);
$rs->execute(array($name, ..., $var7));
$id = $db->lastInsertId();
return $id;
}
编辑:
function edit_bank($idBank, $vars = array()) {
$sql = "UPDATE BANK SET ";
$v = array();
if ( isset($vars['Name']) ) {
$sql .= "Name = ?, ";
$v[] = $vars['Name'];
}
...
..
if ( isset($vars['Var7']) ) {
$sql .= "Var7= ?, ";
$v[] = $vars['Var7'];
}
$sql = rtrim($sql, ", ");
$sql .= " WHERE ID = ?";
$v[] = $idBank;
$rs = $db->prepare($sql);
$rs->execute($v);
}
现在,每次我需要向表中添加新字段时,我总是编辑这两个函数......
我想减少这个问题,只编辑 edit_bank 函数并保留 add_bank 函数。
我正在考虑这样的解决方案:
function add_bank($vars = array()) {
$sql = "INSERT INTO BANK";
$rs = $db->prepare($sql);
$rs->execute();
$id = $db->lastInsertId();
edit_bank($id, $vars);
return $id;
}
但似乎查询:$sql = "INSERT INTO BANK"
; 无效。有什么解决办法吗?
解决方案
如果我理解正确,您只想插入一个空行,从自动增量列中获取新的 id,然后用您想要的数据更新它。我个人在某些情况下使用过这种方法,我认为它没有任何问题。
您可以插入具有所有默认值的新行,如下所示:
INSERT INTO BANK () VALUES();
或者,如果ID
是自动增量(看起来是),您可以执行以下操作:
INSERT INTO BANK SET ID = NULL;
请注意,要使其正常工作,您的所有列都需要具有默认值,或者您需要确保将STRICT_TRANS_TABLES
其关闭,否则您可能会收到错误消息。
现在你应该有一个新的 id 和一个空行来编辑。
推荐阅读
- javascript - IE 11 显示无效日期和 chrome/firefox 显示正确日期
- javascript - 当页面最初加载时,如何根据文本的值更改文本的颜色?
- java - android中的EncodeURIComponent等价物
- python - 以不同列宽的固定格式保存 Pandas 数据框
- r - 绘制标准误差线
- python - 将 Python 转换为 .Net 代码以使用 MD5/RSA 进行签名
- android - Android Studio 音频共享问题
- stm32 - 如何在 STM32 微控制器中启用 ADC_1 中断
- python - 如何在一组点上绘制矩形?
- sql-server - 对于存储过程中的每个循环