如何使用PHP SQL Parser将数组值转换为MySQL查询语句?
将PHP SQL Parser解析后的数组转回MySQL查询语句
嘿,刚好PHP SQL Parser自带了SQL生成器功能,不用你手动拼接数组元素来重建SQL语句,直接用它的PHPSQLCreator类就能轻松搞定!
下面是修改后的完整可运行代码,替换你原来的代码即可:
<?php require_once dirname(__FILE__) . '/../src/PHPSQLParser.php'; // 别忘了引入生成器类,这是还原SQL的核心 require_once dirname(__FILE__) . '/../src/PHPSQLCreator.php'; $sql = 'SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate FROM Orders LEFT JOIN Customers ON Orders.CustomerID=Customers.CustomerID where Customers.CustomerName = "Siddhu"'; // 这里的strtolower可以保留也可以去掉,生成器会匹配你传入的SQL大小写风格 $sql = strtolower($sql); echo "原SQL:" . $sql . "<br>"; // 解析SQL为数组 $parser = new PHPSQLParser($sql, true); // 实例化生成器,传入解析后的数组 $creator = new PHPSQLCreator($parser->parsed); // 生成对应的MySQL查询语句 $generatedSql = $creator->build(); echo "<br>还原后的SQL:" . $generatedSql . "<br>"; echo "<pre>解析后的数组结构:"; print_r($parser->parsed); echo "</pre>"; ?>
关键步骤说明:
- 必须引入
PHPSQLCreator.php文件,它是专门负责从解析数组重建SQL的工具类 - 实例化
PHPSQLCreator时,直接传入解析器生成的$parser->parsed数组即可 - 调用
build()方法就能一键得到还原后的MySQL查询语句
小提示:
- 如果你之前把SQL转成了小写(像你代码里的
strtolower($sql)),生成的SQL也会是小写风格;如果保留原SQL的大小写,生成结果也会对应保留 - 生成器会自动处理JOIN、WHERE、SELECT字段等所有SQL结构,不用你手动遍历数组拼接,能避免很多语法错误
内容的提问来源于stack exchange,提问作者Siddhu
相关产品推荐
相关产品推荐

