在动态数组中插入mysql中的行,由多列

时间:2016-05-06 02:01:31

标签: php mysql arrays

enter image description here我有一个mysql表,其中包含以下列:

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.

帮助将不胜感激

1 个答案:

答案 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行。

希望有所帮助