0

$post_imgと$post_sortの2つの配列が生成されます。

 Array
(
    [0] => test1.jpg
    [1] => test2.jpg
    [2] => test3.jpg
)
Array
(
    [0] => 3
    [1] => 1
    [2] => 2
)

私はそれらを次のようにマージしたいと思います:

Array
(
    [Image] => Array
        (
            [0] => test1.jpg
            [1] => test2.jpg
            [2] => test3.jpg
        )
    [Sort] => Array
        (
            [0] => 3
            [1] => 1
            [2] => 2
        )
)

次のように、各エントリを1行でデータベースに挿入するのが最善の方法だと思います。

ID | Image       | Sort 
1    test1.jpg     3
2    test2.jpg     1
3    test3.jpg     2  

重要なのは、これは1つのクエリで可能になるはずだと思うということです。私はさまざまな試みをしましたが、どれもうまくいきませんでした。

4

3 に答える 3

2

複数のイテレータを使用する

$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($post_img));
$mi->attachIterator(new ArrayIterator($post_sort));

foreach ( $mi as $value ) {
    list($filename, $sortOrder) = $value;
    echo $filename , ' => ' , $sortOrder , '<br />';
}

データベース挿入のために両方の配列を同時に処理するのが簡単になるかもしれません

于 2013-03-04T14:45:18.593 に答える
0

使用array

$newarray = array('Image' => $post_img, 'Sort' => $post_sort);

テーブルにデータを追加するには、元の配列を使用できます。

$sql = "INSERT INTO tablename SET Image=:image, Sort=:sort";
$dbImgInsert = $db->prepare($sql); // preparing sql for insert, using parameters

$c = count($post_img)-1;

for ($i=0;$i<=$c;$i++;) { // looping through the arrays

    $dbImgInsert->execute(array(   // inserting the data into the prepared query and into the db
        'image' => $post_img[$i],
        'sort' => $post_sort[$i]
        ));
} // for

上記の例は、MySQLをPDOで使用していることを前提としています。

従来の方法で単一のINSERTステートメントを作成するには、次のようにします。

$sql="";
$c = count($post_img)-1;
for ($i=0;$i<=$c;$i++;) { // looping through the arrays

    $sql.="('{$post_img[$i]}', '{$post_sort[$i]}'), ";
}
$sql ="INSERT INTO tablename (Image, Sort) VALUES " . trim($sql,',');
于 2013-03-04T14:43:30.610 に答える
0

配列をマージする意味はありません。次のようなSQLステートメントを実行できます。

INSERT INTO tbl (Image, Sort) VALUES
($post_img[0], $post_sort[0]),
($post_img[1], $post_sort[1]),
($post_img[2], $post_sort[2]),
($post_img[3], $post_sort[3])

そのクエリの後半は、ある種のループを使用して生成できます。

于 2013-03-04T14:46:50.397 に答える