php - medoo怎么在column参数中使用sql函数?
本文介绍了php - medoo怎么在column参数中使用sql函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
SELECT COUNT(distinct(uid)) FROM nazou.items_want
有时候需要像上面那条那样,查一下某个表里有哪些uid
,使用medoo
的count
方法,怎么做到上面那条语句那样的功能?
解决方案
已解决我目前的版本是1.4.5
修改
protected function columnPush(&$columns)
{
if ($columns === '*')
{
return $columns;
}
$stack = [];
if (is_string($columns))
{
$columns = [$columns];
}
foreach ($columns as $key => $value)
{
preg_match('/^#([a-zA-Z0-9_\-]*)\(([a-zA-Z0-9_\-\.]*)\)\s*(\(([a-zA-Z0-9_\-]*)\))?/i', $value, $match);
if(isset($match[1], $match[2])){
$column_fn = $match[1] . '('. $this->columnQuote( $match[2] ) . ')';
if( count($match) === 5 ){
array_push($stack, $column_fn . ' AS ' . $this->columnQuote( $match[4] ));
}else{
array_push($stack, $column_fn);
}
}else{
preg_match('/([a-zA-Z0-9_\-\.]*)\s*\(([a-zA-Z0-9_\-]*)\)/i', $value, $match);
if (isset($match[1], $match[2]))
{
array_push($stack, $this->columnQuote( $match[1] ) . ' AS ' . $this->columnQuote( $match[2] ));
}
else
{
array_push($stack, $this->columnQuote( $value ));
}
}
}
return implode($stack, ',');
}
并且修改select方法最后部分
while ($data = $query->fetch(PDO::FETCH_ASSOC))
{
// $current_stack = [];
//$this->dataMap($data, $columns, $column_map, $current_stack);
$stack[$index] = $data;
$index++;
}
return $stack;
这篇关于php - medoo怎么在column参数中使用sql函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文