2

MySQL 関数のパラメーターを取得し、それらを PHP の配列に入れる方法を探しています。例:

$field = "CONCAT(fieldA, ' ', fieldB)";

私がこれまでに行ったことは次のとおりです。

preg_match("/^([A-Z_]*)\((.*)\)/", $field, $matches)
$parameters = explode(",", $matches[2]);

上記の例ではうまくいきます。ただし、次の例で同じ解決策を試してください。

$field = "CONCAT_WS(', ', fieldA, fieldB)";

結果は次のとおりです。

Array
(
    [0] => '
    [1] =>  '
    [2] =>  fieldA
    [3] =>  fieldB
)

そして、私は取得したいと思います:

Array
(
    [0] => ', '
    [1] =>  fieldA
    [2] =>  fieldB
)

私が提供した例だけでなく、これを行う普遍的な方法を探しています。すべてのタイプのパラメーターで機能するはずです。文字列、フィールド名、および関数。

4

1 に答える 1

0

コールバックを指定しないことで、それをそのまま連結し、array_filter($result)分解するときに結果に対して を使用するだけです。空の文字列は false を返すため、問題を引き起こしているものを削除します。(あなたの問題を正しく理解している場合)

または、別の区切り記号を使用して、代わりにその上で爆発しますか?

編集:あなたの質問に基づいて、フィールドを通常どおり取得して配列として返すことができますか?

PDOに基づく

<?php
    $sth = $dbh->prepare("select ', ' as f1, fieldA as f2, fieldB as f3 from tableName");
    $sth->execute();

    print("PDO::FETCH_BOTH: ");
    print("Return next row as an array indexed by both column name and number\n");
    $result = $sth->fetch(PDO::FETCH_BOTH);
    print_r($result);
    print("\n");
?>

出力:

Array
(
    [0] => ', '
    [f1] => ', '
    [1] =>  fieldA
    [f2] =>  fieldA
    [2] =>  fieldB
    [f3] =>  fieldB
)
于 2012-09-07T08:53:02.847 に答える