我正在做一个项目,该项目需要我进行数据库插入并填充很多列。我尝试使函数动态化,这样我就不必键入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);
在这个问题上的任何帮助将不胜感激:)甚至有可能是我想要在这里实现的吗?
)
在爆裂之前,缺少缺少来关闭列分配。
$sql = "INSERT INTO stackoverflowplaceholder (".implode("','",$stacks)." VALUES (";
将会
$sql = "INSERT INTO stackoverflowplaceholder (".implode("','",$stacks)." ) VALUES (";
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句