如何将此数组添加到MySQL(非常困惑)

时间:2013-08-25 11:00:39

标签: php mysql arrays

我一直试图找到这个问题的答案,但我无法...... 所以我不得不问一个问题......

为了简短起见,我不会发布我所拥有的任何代码,而是直接提出问题。

我的数组看起来像这样:

Array
(
    [0] => Array
        (
            [0] => ID09666
            [1] => ID14366
            [2] => ID8174
            [3] => ID4106
        )

    [1] => Array
        (
            [0] => /title_is_fantastic/
            [1] => /what_an_awesome_title/
            [2] => /great_title/
            [3] => /awesome_title/
        )

    [2] => Array
        (
            [0] => Title is fantastic
            [1] => What an awesome title
            [2] => Great title
            [3] => Awesome title
        )

    [4] => Array
        (
            [0] => 100%
            [1] => 86%
            [2] => 76%
            [3] => 68%
        )

)

我需要添加到DB的值是:

ID = ID09666
url = /title_is_fantastic/
title = Title is fantastic
percent = 100%

那么如何将这些值最快地添加到数据库中呢? 我对这个数组非常困惑,所以任何帮助都表示赞赏。

谢谢!

2 个答案:

答案 0 :(得分:0)

假设你的数组是$array

$length = count($array[0]);
$rows = array();
for($i = 0; $i < $length; $i++)
     $rows[] = "(".array($array[0][$i].", ".$array[1][$i].", ".$array[2][$i].", ".$array[3][$i].")";

// Ugly language with no executemany function... So we build a INSERT INTO with many values by ourselves 
$sql = "INSERT INTO table (id, url, title, percent) VALUES " . implode(',', $rows);

$stmt = $pdo->prepare ($sql);
try {
    $stmt->execute($insert_values);
} catch (PDOException $e){
    echo $e->getMessage();
}
$pdo->commit();

答案 1 :(得分:0)

嗯,我想我理解你的观点。问题是你的原始阵列有点相当奖励。如果我是你,我会创建一个函数来首先重新排列数组:

Array
(
    [0] => Array
        (
            [id] => ID09666
            [url] => /title_is_fantastic/
            [title] => Title is fantastic
            [percent] => 100%
        )
     ...
)

然后直接访问第一个(或任何)元素。 功能类似于:

function rearrange($arr){
    $array_number = count($arr[0]);
    $new_arr = array();
    for ($i=0,$i<$array_number<$i++){
       $new_arr[$i]['id']=$arr[0][$i];
       $new_arr[$i]['url']=$arr[1][$i];
       $new_arr[$i]['title']=$arr[2][$i];
       $new_arr[$i]['percent']=$arr[3][$i];
    }
    return $new_arr;
}