我正在尝试使用PHP / MySQL将此嵌套数组插入数据库:
[type] => Array
(
[0] => ready-made
[1] => ready-made
)
[company_name] => Array
(
[0] => Nevim
[1] => sadasdsa
)
[ico] => Array
(
[0] => 55
[1] => 545
)
第一个键(类型等)是列,第二个键(数字)是行。 但是我无法发现最简单的方法,甚至无法以任何方式将其插入数据库。
答案 0 :(得分:2)
我假设您已与数据库建立连接,并且在此示例代码中,我使用$mysqli
作为保持连接的变量。
您需要做的就是在一个数组的数组上循环,让我们使用type
,然后使用当前类型数组的索引来引用其他两个数组的正确出现,像这样。
$data = [
'type' => ['ready-made', 'ready-made'],
'company_name' => ['Nevim', 'sadasdsa'],
'ico' => [55, 545]
];
$sql = 'INSERT INTO table_name (type, company_name,ico) VALUES(?,?,?)';
$stmt = $mysqli->prepare($sql);
foreach ($data['type'] as $idx => $type) {
$stmt->bind_param('ssi',
$type,
$data['company_name'][$idx],
$data['ico'][$idx]
);
$stmt->execute();
}
我在这里使用了MYSQLI_ API,但是如果您使用的是PDO,请在评论中告诉我,我也会添加它
您可能还应该检查3个数组的长度是否相同,就好像其中一个数组比另一个数组短一样。
如果您使用的是PDO
$sql = 'INSERT INTO table_name (type, company_name,ico) VALUES(?,?,?)';
$stmt = $pdo->prepare($sql);
foreach ($data['type'] as $idx => $type) {
$params = [$type, $data['company_name'][$idx], $data['ico'][$idx]];
$stmt->execute($params);
}
答案 1 :(得分:-1)
使用foreach
遍历数组并将其插入
foreach($type as $key=>$value) {
$sql = "insert into table (type,company_name,ico) values('$value','company_name[$key]','ico[$key]')"
}