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 回答