我正在寻找一种方法来获取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
)
我正在寻找一种通用的方法,而不仅仅是我提供的例子。它应该适用于所有类型的参数;字符串,字段名称和函数。
答案 0 :(得分: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
)