Dav*_*vid 3 php mysql arrays string explode
这更多地用于在将查询发送到服务器之前分析 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
Run Code Online (Sandbox Code Playgroud)
因此,在这种情况下,我需要将“user_id,username,DATE(join_datetime) 作为 join_date, (SELECT COUNT(1) FROM foobar WHERE foonum IN (5,4,6) and user_id = users.user_id) 作为 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'
)
Run Code Online (Sandbox Code Playgroud)
我已经提取了查询的字段部分,但我坚持尝试用逗号分解字段。主要问题在于子查询中也可能包含逗号(参见示例)。
谢谢你的帮助!
您必须编写一个几乎与 MySQL 的查询解析器(用 C 的 YACC/Bison 编写)一样复杂的解析器。它不会是正则表达式或一些字符串操作。这是一种非常规语言,没有实际的解析器就无法解析它们。
您也不能只遍历字符串来查找逗号和括号,SQL 比这复杂得多。表达式内有表达式、函数调用、条件逻辑等。所有这些都可以用逗号和括号任意嵌套。
http://dev.mysql.com/doc/refman/5.0/en/expressions.html
如果您真的想使用 PHP 来实现这一点,那么您还有很长的路要走。
| 归档时间: |
|
| 查看次数: |
3975 次 |
| 最近记录: |