【发布时间】: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 个字段的虚拟表,如您所见:selected、user_id、user_name、user_company 和 user_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