3

配列$solutionは2次元です。その内容をSQLテーブルに保存する必要があります。ただし、保存する前に$solution[i][0]、クエリの結果に属するものを確認する必要がありますSELECT num_arr FROM Schedule WHERE num_arr<>''

問題は行にあり$vals = implode(...)ます。配列のi番目の行にコンマを挿入するにはどうすればよい$solutionですか?これで、この行0,0,0,0は正しい値ではなく文字列になります。

    $columns_land = array("`num_arr`","`start`","`fin`","`way`");
    $cols_land = implode(",",$columns_land);

    for($i=0; $i<sizeof($solution); $i++) {
            $vals = implode(',', array_map('implode_comma', $solution[$i]));
            query_land = "INSERT INTO `Sequence` (" . $cols_land . ") 
                          VALUES " . $vals . " 
                          WHERE num_arr='".$solution[$i][0]."' 
                          AND num_arr IN (SELECT num_arr FROM Schedule WHERE num_arr<>'')";

            $result_land = execute_query($query_land);
    }

    function implode_comma($arr) {
        return '(' . implode(',', $arr) . ')';
    }
4

1 に答える 1

1

この声明は私を混乱させました:

$vals = implode(',', array_map('implode_comma', $solution[$i]));

implode_comma()は配列を想定しているため、 の各項目も配列でなけれ$solution[$i]ばなりません。しかし、それは$solutionsそれ自体が 3 次元配列でなければならないことを意味します。

代わりにループ内にこれを書くことができると思います:

$vals = implode(',', $solution[$i]);
$query_land = "INSERT INTO `Sequence` ($cols_land) 
    VALUES ($vals)
    WHERE num_arr='".$solution[$i][0]."' 
    AND num_arr IN (SELECT num_arr FROM Schedule WHERE num_arr<>'')";

$result_land = execute_query($query_land);

ところで、SQL で使用する変数は適切にエスケープする必要がありますが、どのデータベース レイヤーを使用しているかはわかりません。それはあなたに任せます。

于 2012-08-29T13:43:00.927 に答える