我已经尝试了这两个链接,但我没有得到 $fields 和 $newdata 中的预期变量内容
** 这个问题在这里提出了一个新问题 **PHP如何从关联数组中提取键名称和值以进行mysql查询 https://stackoverflow.com/q/45368084/3446280(正如所解释的,我是新手,需要一些工作才能以正确的方式提出问题)
所以我在这里打印一些 var_dump 并强制转换以请求您的支持。
为了简化我的学习实验,我使用了一个仅包含 5 个字段的虚拟表,如您所见:selected
, user_id
, user_name
, user_company
and 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);
但是我的解释或代码中有问题,因为输出是
Notice: Array to string conversion in D:\xampp\htdocs\ajax-json\post.php on line 25
Notice: Array to string conversion in D:\xampp\htdocs\ajax-json\post.php on line 25
string(3) "0,1"
string(15) "'Array','Array'"
你能指出哪里出了问题吗?
例如我的数组格式正确吗?
原问题
我是新手,经过进一步阅读后,我明白了这一点,希望现在我的问题可以变得更简单。谢谢你的任何提示。
我有一个二维数组,因为它的记录来自 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 循环吗?
感谢您的帮助