gpt4 book ai didi

php - 动态地从 MySQL 字符串中提取 WHERE 组件

转载 作者:可可西里 更新时间:2023-11-01 07:57:27 24 4
gpt4 key购买 nike

假设我有以下字符串(忘记它是一条MySQL语句):

SELECT * FROM users WHERE name = 'fred bloggs' AND age=21 AND address='Mountain View, CA 94043' LIMIT 1

我需要一种方法来提取 WHERE 子句中的字段名称和值,因此我有一个数组,如下所示:

Array
(
[name] => fred bloggs
[age] => 21
[address] => Mountain View, CA 94043
)

记住这是一个动态的 MySQL 字符串,所以我不能硬编码姓名、年龄或地址。

我能预见的问题是:

  • 查找字段名称,该函数必须知道所有有效运算符才能匹配每个字段名称(请参阅下面要使用的数组)
  • 不保证名额(例如年龄=21)
  • 查找 ' 和 ' 中的值,但当 ' 位于字符串中时不中断
  • 查找不在 ' 和 ' 内的值,例如数字或其他字段名称(需要单独处理)

有没有人知道如何使用正则表达式或字符串函数来做到这一点?

如果需要,这里是运算符:

$operators = array('+', '-', '*', '/', '^', '=', '<>', '!=', '<', '<=', '>', '>=', 'like', 'clike', 'slike', 'not', 'is', 'in', 'between', 'and', 'or');

最佳答案

你可以尝试使用这种工具: http://code.google.com/p/php-sql-parser/

您将获得描述查询的树(数组),这将帮助您构建所需的数组。

关于php - 动态地从 MySQL 字符串中提取 WHERE 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5107395/

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