Healthcare_Provider_Taxonomy_Code_1,
Healthcare_Provider_Taxonomy_Code_2,
Healthcare_Provider_Taxonomy_Code_3, .....
我正在调用一个在json中返回结果的API,在解码之后,我得到了一个数组---
Array
(
[result_count] => 1
[results] => Array
(
[0] => Array
(
[taxonomies] => Array
(
[0] => Array
(
[state] => CO
[code] => 111N00000X
[primary] =>
[license] => EL.2786416
[desc] => Chiropractor
)
[1] => Array
(
[state] => CO
[code] => 111N00000X
[primary] => 1
[license] => CHR.0007308
[desc] => Chiropractor
)
)
我坚持的地方是,返回的数组可能是动态的,例如 - 分类数组可能是两个或一个或三个。如何将其插入带有分隔列的mysql表中?如上所述?
基本上它会像
一样插入ROW 1 ---- 111N00000X------111N00000X.
帮助将不胜感激
答案 0 :(得分:0)
考虑到您要查询的API具有最大数量的记录,并且您有足够数量的列来全部记录它们,您可以使用:
$number_of_col = 4;
$codes = array_fill(0, $number_of_col, null); // Create a container of know length
$params = array_replace($codes, array_column($data, 'code')); // Extract eh code column and overwrite the container
$query = "INSERT INTO MyTable (col1, col2, col3, col4) VALUES(?,?,?,?)"; // Query with fixed number of columns
$stmnt = $pdo->$prepare($query);
$stmnt->execute($codes, $params);
自PHP 5.5.0起添加了函数array_column,因此您可能无权访问它。在这种情况下,您可以使用简单的foreach进行工作。
$codes = array_fill(0, $number_of_col, null); // Create a container of know length
foreach ($result['taxonomie'] as $key => $sub_array)
$codes[$key] = $sub_array['code'];
// Insert in DB just like show before. Your data is in $codes
另外,根据我的经验处理API时的一条建议。永远不要假设已经提供了某种结果。在我的例子中,我特意省略了在使用它们之前检查结果是否存在,但你应该这样做。
$codes = array_fill(0, $number_of_col, null); // Create a container of know length
if (!isset($result['taxonomie']))
// Error handling
foreach ($result['taxonomie'] as $key => $sub_array)
{
if (!isset($sub_array['code']))
// Error handling
$codes[$key] = $sub_array['code'];
}
最后,如果您不知道对API的查询将返回的最大结果数,则无法在数据库中设置固定数量的列。您将需要一个结构,其中1个代码= 1行。
希望有所帮助