首页 > 解决方案 > 没有变量的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"; 无效。有什么解决办法吗?

标签: phpmysql

解决方案


如果我理解正确,您只想插入一个空行,从自动增量列中获取新的 id,然后用您想要的数据更新它。我个人在某些情况下使用过这种方法,我认为它没有任何问题。

您可以插入具有所有默认值的新行,如下所示:

INSERT INTO BANK () VALUES();

或者,如果ID是自动增量(看起来是),您可以执行以下操作:

INSERT INTO BANK SET ID = NULL;

请注意,要使其正常工作,您的所有列都需要具有默认值,或者您需要确保将STRICT_TRANS_TABLES其关闭,否则您可能会收到错误消息。

现在你应该有一个新的 id 和一个空行来编辑。


推荐阅读