首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xpdo -一次将多维数组插入db表最多5行。

xpdo -一次将多维数组插入db表最多5行。
EN

Stack Overflow用户
提问于 2019-12-03 04:49:35
回答 1查看 59关注 0票数 0

我有一个表单,用户可以通过输入和选择将5个计数器与不同的值相加,形成许多不同的其他值。

大多数数据应该写入到不同的现有数据库表中,到目前为止,每个表都能正常工作。

到目前为止,我使用了一个现有脚本,该脚本能够在表单提交后向不同的现有数据库表添加一行。

其中一个表名为"zaehler_test",它需要从用户可以在表单中添加的$_POST值中为每个计数器插入一行。这个编辑的脚本能够做到这一点:

代码语言:javascript
复制
 $sql_str = $xpdo->prepare("INSERT INTO zaehler_test (id, k_id, z_id, zaehlertyp, befestigung, messung, wandlerfaktor, eigentumwandler, zaehlerart, spannungsebene, zugang, anmerkungen) VALUES (:id, :k_id, :z_id, :zaehlertyp, :befestigung, :messung, :wandlerfaktor, :eigentumwandler, :zaehlerart, :spannungsebene, :zugang, :anmerkungen)");

  $sql_str->bindParam (":id", $id);
  $sql_str->bindParam (":k_id", $id);
  $sql_str->bindParam (":z_id", $_POST['zaehlernummer']);
  $sql_str->bindParam (":zaehlertyp", $_POST['zaehlertyp']);
  $sql_str->bindParam (":befestigung", $_POST['befestigung']);
  $sql_str->bindParam (":messung", $_POST['messung']);
  $sql_str->bindParam (":wandlerfaktor", $_POST['wandlerfaktor']);
  $sql_str->bindParam (":eigentumwandler", $_POST['eigentumwandler']);
  $sql_str->bindParam (":zaehlerart", $_POST['zaehlerart']);
  $sql_str->bindParam (":spannungsebene", $_POST['spannungsebene']);
  $sql_str->bindParam (":zugang", $_POST['zugang']);
  $sql_str->bindParam (":anmerkungen", $_POST['anmerkungen']);

  try{
      $sql_str->execute();
  }

表"zaehler_test“如下所示:

代码语言:javascript
复制
+----+------+------+------------+-------------+---------+---------------+-----------------+------------+----------------+--------+-------------+
| id | k_id | z_id | zaehlertyp | befestigung | messung | wandlerfaktor | eigentumwandler | zaehlerart | spannungsebene | zugang | anmerkungen |
+----+------+------+------------+-------------+---------+---------------+-----------------+------------+----------------+--------+-------------+
| 1  | 1234 | 1234 |     1      |      2      |    3    |      25       |        4        |     2      |     0          |   1    |      3      |
+----+------+------+------------+-------------+---------+---------------+-----------------+------------+----------------+--------+-------------+

到目前为止这还不错。但是现在我需要从用户可能在表单中添加的其他可能计数器获取数据。

我首先尝试一个一个地为每个计数器插入数据,只需简单地欺骗脚本并编辑相关的$_POST变量,但这是行不通的。

经过大量的研究,我偶然发现了一个script,它可以一次将所有数据插入到db表中,但它使用数组来实现这一点。

因此,在表单提交之后,我从已发布的值中创建了几个数组。数组如下所示:

阵列"zaehler1"

代码语言:javascript
复制
Array
(
    [id] => db6aac9dbe239c0e0095afee9d74cab4_879012
    [k_id] => db6aac9dbe239c0e0095afee9d74cab4_879012
    [z_id] => 111
    [zaehlertyp] => 1
    [befestigung] => 1
    [messung] => 1
    [wandlerfaktor] => 
    [eigentumwandler] => 0
    [zaehlerart] => 1
    [spannungsebene] => 1
    [zugang] => 2
    [anmerkungen] => 
)

阵列"zaehler2"

代码语言:javascript
复制
Array
(
    [id] => db6aac9dbe239c0e0095afee9d74cab4_879012
    [k_id] => db6aac9dbe239c0e0095afee9d74cab4_879012
    [z_id] => 222
    [zaehlertyp] => 2
    [befestigung] => 1
    [messung] => 1
    [wandlerfaktor] => 
    [eigentumwandler] => 0
    [zaehlerart] => 1
    [spannungsebene] => 1
    [zugang] => 2
    [anmerkungen] => 
)

数组3到5看起来一样,都可以有不同的(键-)值(数字).

我找到的at the earlier mentioned link脚本如下所示:

代码语言:javascript
复制
// multiple queries
$stmt = $pdo->prepare('INSERT INTO table SET memberID=:memberID, programID=:programID, date_added=NOW()');
$data = array(155, 165, 175, 185);
foreach($data as $d) {
    $stmt->execute(array(':memberID' => $memberid, ':programID' => $d));
}

我试图使它适应我的需要,并希望首先只使用第一个数组,并且只使用一些数据,但我失败了。到目前为止,这就是我所得到的:

代码语言:javascript
复制
// multiple queries
$stmt = $xpdo->prepare('INSERT INTO zaehler_test SET id=:id, k_id=:k_id, z_id=:z_id');
$data = $zaehler1;
foreach($data as $d) {
    $stmt->execute(array(':id' => $id, ':k_id' => $id, ':z_id' => $d));
}

通过使用这个脚本,我添加了12行(每个数组键一行),这显然是错误的。我希望得到一个行,并将相关值添加到每个键中。在此之后,我想尝试如何使它与我前面提到的最多5个数组一起工作。

有人能帮我找到正确的方向吗?经过几个小时的努力和研究,我有点迷茫了。

谢谢您抽时间见我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-03 04:59:17

Modx - xPDO是我们对PDO开放eXtensions的名称。它是一个轻量级ORB (对象关系桥)库,直接建立在PDO上。它实现了非常简单但有效的数据访问活动记录模式。

试试这个:

代码语言:javascript
复制
//express each set of values in to a separate array
$data = array(
      [155, 165, 175],
      [155, 165, 175] 
   );
$stmt = $xpdo->prepare('INSERT INTO zaehler_test SET id=?, k_id=?, z_id=?');
foreach($data as $d) {
    $stmt->execute($d);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59150340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档