PDO:创建动态插入语法错误

时间:2015-06-20 14:00:03

标签: php mysql pdo

我正在开发一个项目,要求我进行数据库插入,并填充相当多的列。我尝试使我的函数动态化,这样我就不必键入28插入列,28个占位符,然后将28个值绑定到28个占位符....并且在不久的将来我可能想要添加更多列,所以这是我试图设置它的方式,整个函数和数组在这里发布有点太多了所以我将坚持使用一些伪代码来解决我的问题的基本部分:

- 在我的表单中,最多有28个输入,输入名称与数据库列名称相同 - 我的代码的基本部分如下(一些替换为伪代码以缩短此帖子)

    <?php 
    //stacks holds 28 values in total
    $stacks = array('name1','name2','name3','blablabla','etcetera');

    // stacksDP is filled in a loop, 
    //contains the same as $stacks but it has a : 
    //in front of every value. 
    $stacksDP = array() // :name1',':name2', ....

    $data = array(); // $data[stack / columnname] = "whatever";

    $execArray = array();
    //$execArray is filled like this in a foreach loop on $stacks as $stack: 
    //$execArray[$stacksDP[$stack]] = $data[$stack];

// so far so good, but now I want to make the actual query and the following gives me a "Syntax error or access violation: 1064 You have an error in your SQL syntax;  "
        $sql = "INSERT INTO stackoverflowplaceholder (".implode("','",$stacks)." VALUES (";
        $sql .= implode(",",$stacksDP); // :columnname,
        $sql .=")";
        $q = $this->conn->prepare($sql);
        echo $q->execute($execArray);

任何有关此事的帮助都将受到赞赏:)甚至可能我想在这里实现的目标?

1 个答案:

答案 0 :(得分:2)

在内爆之前关闭列分配时缺少date.today()

)

将是

$sql = "INSERT INTO stackoverflowplaceholder (".implode("','",$stacks)." VALUES (";