gpt4 book ai didi

php - 如何在 PHP 中获取 MySQL 函数的参数

转载 作者:行者123 更新时间:2023-11-29 03:42:17 25 4
gpt4 key购买 nike

我正在寻找一种获取 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
)

我正在寻找一种通用的方法来执行此操作,而不仅仅是针对我提供的示例。它应该适用于所有类型的参数;字符串、字段名称和函数。

最佳答案

您可以按原样连接它,并在分解结果时简单地在结果上使用 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
)

关于php - 如何在 PHP 中获取 MySQL 函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12314697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com