php - 将 PHP 基于字符串的查询转换为动态数组
问题描述
我正在尝试为自己制作一个 NoSQL 脚本。然而,我一直很喜欢 MySQL 使用的“单行查询”方法。例如:
$sql = "SELECT id, firstname, lastname FROM MyGuests";
如果我想使用纯 PHP 使用相同的查询,我最终会使用一个数组。像这样:
$sql = array(
"SELECT" => "id, firstname, lastname",
"FROM" => "MyGuests",
);
尽管它以这种方式工作得很好,但它并不像它应该的那样优雅。我试过 PHP 的爆炸功能:
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$sql_query = explode(" ", $sql);
这将输出:
Array
(
[0] => SELECT
[1] => id,
[2] => firstname,
[3] => lastname
[4] => FROM
[5] => MyGuests
)
现在你可以说:$sql_query[0]
等于 SELECT,$sql_query[4]
等于 FROM。然而问题是:这些值不是固定的。当我要添加像“WHERE”这样的条件时,我必须为每个场景创建一个 if-else 语句。并且 SELECT 的值的数量(在本例中为 (3):id、first name、lastname)将始终是随机的。它可以是更多的值,也可以是更少的值。长话短说:我最终会花费数小时制作一个预定义所有可能场景的 PHP 脚本。
我的问题是:是否有一种方法可以将基于字符串的查询“转换”为数组,而无需预先定义所有内容?它必须找到诸如 SELECT、UPDATE、WHERE、FROM 等词,并获取这些内容之后的值。所以一种更优雅和动态的方式。
例子:
"SELECT id, username FROM Users"
应转换为:
$sql = array(
"SELECT" => "id, username",
"FROM" => "Users",
);
和:
"SELECT * FROM Users WHERE Country=US"
或者:
"SELECT * WHERE Country=US FROM Users"
应转换为:
$sql = array(
"SELECT" => "*",
"FROM" => "Users",
"WHERE" => "Country=US",
);
它应该知道像 (FROM, WHERE) 这样的另一个词从哪里开始,因此它不会将该词作为值。它应该能够被随机化。
(如果这个问题不清楚,我很抱歉,我对 PHP 还是很陌生。)
提前感谢您抽出宝贵时间阅读本文!
解决方案
推荐阅读
- python-3.x - 在python中将图像黑色背景转换为白色,将白色转换为黑色
- angular - 打字稿 - 在过滤器中添加动态字段
- c# - 从 C# 中缺少键的列表创建完整集
- dfa - 将用于电子邮件验证的 NFA 转换为 DFA
- material-ui - 如何从商店获取主题并在 react-admin 上切换应用主题?
- firebase - 在 Firebase 云函数中解压缩 OAuth2 响应
- javascript - 将参数从一个函数传递到另一个函数
- c# - 针对特定选项卡的 C# 打开 URL
- c# - 使用 dotnet run 时无法将 -p 参数传递给 .NET 应用程序
- javascript - Vue组件在我使用时不渲染
标签