【发布时间】:2011-06-25 12:25:27
【问题描述】:
这更多地用于分析 PHP 中的查询在发送到服务器之前。我这样做的原因很复杂,所以我宁愿不去解释这样做的原因。
在 PHP 中,我需要将字段选择存储到 PHP 数组中。所以以这个查询为例:
SELECT user_id,username,DATE(join_datetime) as join_date, (SELECT COUNT(1) FROM foobar WHERE foonum IN (5,4,6) and user_id = users.user_id) as myfoo_count
FROM users
WHERE user_id = 123
在这种情况下,我需要将user_id,username,DATE(join_datetime) as join_date, (SELECT COUNT(1) FROM foobar WHERE foonum IN (5,4,6) and user_id = users.user_id) as myfoo_count 存储到由逗号 (,) 展开的数组中。所以我会得到:
array (
[1] => 'user_id',
[2] => 'username',
[3] => 'DATE(join_datetime) as join_date',
[4] => '(SELECT COUNT(1) FROM foobar WHERE foonum IN (5,4,6) and user_id = users.user_id) as myfoo_count'
)
我已经提取了查询的字段部分,但我坚持尝试用逗号分解字段。主要问题是子查询中也可能包含逗号(参见示例)。
【问题讨论】:
-
好吧,这与它无关。这种情况需要我看一本小说来解释原因。它的设计或懒惰都不错,我只是不想让每个人都对项目的不需要的细节感到厌烦。
-
X-Ref: SQL parser in PHP?
-
大卫,任何怀疑解析器在 PHP 中的声明性语言的有用性的人都不值得争论。注意,我编写了 X-Ref 中引用的 PHP SQL 解析器。