SQL选择器上的PHP函数

SQL选择器上的PHP函数,php,mysql,Php,Mysql,在数据库查询仍在运行时,是否可以对数据库查询返回的数据执行特定的PHP函数 假设我们在某个类中,我们有以下伪SQL,它应该返回几行: $results = $this->db->query("SELECT PHP_function(column), column 2 FROM table")->fetchAll(PDO::FETCH_ASSOC); 例如,PHP_函数可以是json_decode 或者这是不可能的,并且需要对结果进行额外的循环才能完成这项工作吗?不,这是不可能

在数据库查询仍在运行时,是否可以对数据库查询返回的数据执行特定的PHP函数

假设我们在某个类中,我们有以下伪SQL,它应该返回几行:

$results = $this->db->query("SELECT PHP_function(column), column 2 FROM table")->fetchAll(PDO::FETCH_ASSOC);
例如,
PHP_函数
可以是
json_decode


或者这是不可能的,并且需要对结果进行额外的循环才能完成这项工作吗?

不,这是不可能的。SQL引擎(mysql或任何其他)是一个单独的应用程序。PHP可以与之通信,发送查询和接收数据。根据您希望在该自定义函数中执行的操作,您可以在mysql中编写一个自定义函数来执行相同的操作


查看有关如何执行此操作的信息。

a包含一个示例

此问题在哪里

<?php
    foreach($results as $key=>$res){
        $results[$key]['column'] = PHP_function($res['column']);
    }

正如我所知,在查询运行时不可能实现php操作,您需要获取结果,然后从中循环aur使用预定义函数。为什么要在查询时执行此操作,而不是稍后执行?为什么在查询运行时需要此操作?之后循环数据有什么问题?如果你需要RDBMS还没有提供的功能(它提供了很多),你可能需要一个新的循环,这是一个额外的循环。对我来说似乎更合法:
returnPHP_函数($row['column')
或者甚至不返回,但是在PDO之前的函数中使用它,我曾经能够在查询之后执行while循环中的任何函数
($row=mysql\u fetch\u assoc($query))
,所以我希望有某种方法访问这个循环。我猜是在PDO
fetchAll
方法中。编辑:没有看到YCS的答案,但是StackoverFlow现在警告我在接下来的六分钟内不要接受任何东西。@user2180613这和你问的不一样。您仍然可以执行循环,但不能在select子句中使用php函数。我知道不可能混合使用两种语言的函数。请看我问题的第一句话。@user2180613您曾询问是否可以在查询仍在运行时对其执行函数,答案是“否”。在循环中检索数据时,查询已完成,不再运行。关于如何强制PDO::FETCH_FUNC的参数具有关联性,有什么建议吗?PDO::FETCH_ASSOC无法实现这一点。这当然是因为参数不能真正关联,因此从
func\u get\u args
接收数字索引数组是很自然的行为。我宁愿将一个参数传递给FETCH_FUNC函数,该函数是从数据库查询返回的列的索引数组。我不会浪费时间进行研究,而是在while循环中使用FETCH()而不是fetchAll(),并在该循环中应用任何复杂的逻辑。