【问题标题】:PHP MySQL insert multimensional associative array building query from array keys [duplicate]PHP MySQL从数组键插入多维关联数组构建查询[重复]
【发布时间】:2018-01-03 02:34:33
【问题描述】:

我已经尝试了这两个链接,但在 $fields 和 $newdata 中没有得到预期的变量内容

** 这个问题已经在这里提出了一个新问题 ** PHP how to extract keys names and values from associative array for mysql query(正如我解释的那样,我是新手,需要一些工作才能以正确的方式提出问题)

所以我请在这里打印一些 var_dump 并投射以请求您的支持。

为了简单起见,我正在使用一个只有 5 个字段的虚拟表,如您所见:selecteduser_iduser_nameuser_companyuser_email。 最后我只插入了 2 行值。

使用此代码

$Arr = (array)$data;
print_r ( $Arr );

我可以看到这个输出

Array ( 
[0] => Array ( [selected] => [user_id] => 3 [user_name] => nome3 [user_company] => azien3 [user_email] => email3 ) 
[1] => Array ( [selected] => 1 [user_id] => 6 [user_name] => nome6 [user_company] => azien6 [user_email] => email6 ) 
)

接下来我尝试应用您的链接代码

24  $fields = implode(",", array_keys($Arr));
25  $newdata = "'" . implode("','", $Arr) . "'";
26  
27  var_dump($fields);
28  echo "<br><br>";
29  var_dump($newdata);

但是我的解释或代码中有问题,因为输出是

注意:第 25 行 D:\xampp\htdocs\ajax-json\post.php 中的数组到字符串转换

注意:第 25 行 D:\xampp\htdocs\ajax-json\post.php 中的数组到字符串转换
字符串(3)“0,1”

string(15) "'数组','数组'"

你能指出什么是错的吗? 例如我的数组是否正确形成?


原始问题

我是新手,经过进一步阅读,我明白了这一点,希望现在我的问题可以变得更简单。感谢您的任何提示。

我有一个二维数组,因为它的记录来自一个 html 表。

在 html 端创建的集合会生成一个关联数组,因此每一行就像下面的示例中一样,您还可以看到,键很多

[item] => Array ( 
    [0] => Array ( 
        [unit] => "car"
        [qty] => 3 
        [description] => "Description 1"
        ....
        [key47] => "thin"
    ) 
    [1] => Array ( 
        [unit] => "bike"
        [qty] => 74 
        [description] => "Description 2"
       ....
        [key47] => "large"
    ) 
)

我要插入项目的mysql表名为items_table

"unit" "qty" 和 "description" 以及所有剩余的键(共 47 个)与 items_table 列的名称完全相同

在 php 方面,我希望使用 PDO 进行一种自动查询生成,它会从内部数组键名中选择列名,并将相应的键值插入正确的列中。

我们的目标是避免创建如此尴尬且极其冗长的查询。

首选方法是使用 PDO,避免绑定 47 个键。

这种自动化也很有用,因为将来 mysql 表中的列可能会被添加和或删除或重命名,所以我想忘记查询只考虑正确编辑 html 表(在那数组已经用一些javascript自动生成)

您认为有可能做到这一点吗?

如果是怎么办?

这还需要一些 foreach 循环吗?

感谢您的帮助

【问题讨论】:

  • P.S.你可能想知道,我是新手。我已经阅读了很多关于这些主题的理论并观看了很多问题,但是我没有找到这种情况/组合。最后感谢您提供正确的链接。
  • 多列的表很可能是设计不佳的表。
  • @Strawberry 不幸的是,这是必须的,因为每个鞋码都有一个鞋号矩阵和数量。虽然我已经完全审查了这个问题。希望现在它更有意义。你能帮忙吗?谢谢
  • 你的逻辑有缺陷。数据库表不是电子表格。您的模型需要 3 列,而不是 n 列。
  • @Strawberry 这是一个简化的例子,真实案例有大约 31 列。但是,如果有人可以帮助实现所需的实现(请参阅问题的新文本,现在已完全重写)列是 3 或 30 还是 300 并不重要 :-)

标签: javascript php mysql json


【解决方案1】:

例如:

core_table
id* unit quantity description
 1  car         3 Description 1
 2  bike       74 Description 2

adjunct_table
core_id* meta_key* meta_value
      1        47  Description of key n.47 first row
      2        47  Description of key n.47 second row

* = (component of) PRIMARY KEY

【讨论】:

  • 感谢您提供代码,但这些字段是订单条目的行。每一行都是订单详情。每一行都是这么多列。作为订单详细信息,这一行是一行,将由 items_table 保存。在如此多的字段中,将 3 列与第二个表再次翻倍是有点没有意义的 :-)。我认为现在问题的重点非常尖锐。我想知道如何重用数组键来构建查询。
  • 更准确地说是 order_items_table
  • 是的,你并没有真正明白它是你。 “这么多列”部分是您设计中的根本缺陷 - 这就是我提出替代模型的原因。
  • 好的,这是一个替代方案,但问题的重点是另一个:关联数组由键名和键值对组成。我正在搜索(如果确实存在)利用这些对构建查询的解决方案,利用自数组键名称作为数据库列名称和键值将它们插入相应的列中(如上所述,它们确实与数组键名具有相同的名称)。
  • 这个问题在stackoverflow.com/q/45368084/344628 的一个新问题中得到了很好的答复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-26
  • 2012-10-29
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多