当列变化时,sqlsrv插入

时间:2017-09-27 06:40:24

标签: php sqlsrv

我在网上搜索过但没有运气。 我是SQLSRV的新手,我从PHP MySQL迁移到PHP SQL,并且在从表单插入数据时遇到问题,因为某些字段是可选的,这使得列号变化。当列号变化时,我需要有关如何插入的帮助。 谢谢 这是我的插入代码的样子

// sql fields and values for main table
    $in_fields = array();
    $in_values = array();

    // prepare insertion
    foreach ($_POST as $key => $value) {
        if (!empty($value)) {
            $value = sql_escape($value);
            $in_fields[] = "[{$key}]";
            $in_values[] = "'{$value}'";
        }
    }       

    // prepare sql stmt
    if (!empty($in_fields)) {
        $sql = "INSERT into [table_name](";
        $sql .= implode(", ", $in_fields);
        $sql .= ") VALUES ()";

        if (executeSql($sql, $in_values)) {
            $success = "Successfully Added New Record";
        }
    }

executeSql函数看起来像这样

function executeSql($sql, $params) {
   global $conndb;
   $rs = sqlsrv_query($conndb, $sql, $params)or die("Db query error.<br />".print_r(sqlsrv_errors(), true));
   return !$rs ? false : true;
}

1 个答案:

答案 0 :(得分:0)

您需要在查询的?部分添加占位符值(VALUES),您需要为您传递的每个值添加一个占位符 - 即$in_values中的每个值

要做到这一点,你可以有另一个数组,它只有?个值作为值,然后就像你为字段所做的那样,将implode数组放入{{1} }}。像这样:

VALUES