gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 06:26:01 24 4
gpt4 key购买 nike

我正在从事一个项目,该项目要求我执行一个数据库插入操作,其中包含很多要填充的列。我尝试使我的函数动态化,这样我就不必键入 28 个插入列、28 个占位符,然后将 28 个值绑定(bind)到 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 (";

关于php - PDO:创建动态插入语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30954802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com