gpt4 book ai didi

php - 使用 PHP 从任何选择查询中提取表名

转载 作者:可可西里 更新时间:2023-11-01 08:18:37 24 4
gpt4 key购买 nike

我试图从使用 PHP 的查询中获取所有表名,使用此函数我得到了除多个表的 JOINS 之外的所有条件,请帮助我也使用相同的函数提取 JOIN 查询。

private function get_tables($query)
{
$arr = explode("FROM", $query);
$second = $arr[1];

if($second==""){
$arr = explode("from", $query);
$second = $arr[1];
}

$consts = array('where','order', 'group', 'limit');
$check=1;

for($i=0;$i<count($consts); $i++)
{
if((stristr($second,$consts[$i]) != '')&&($check==1))
{
$where = explode($consts[$i],$second);
if($check == 1)
{
$check=2;
$tables= $where[0];
}
}
}
if($check == 1)
{
$tables= $arr[1];
}
$tab_arr = explode(',',$tables);
$name_arr = array();

foreach($tab_arr as $name)
{
if($name != '')
{
$name = trim($name);
$narr = explode(' ',$name);
$name_arr[] = $narr[0];
}

}
$name_arr = array_unique($name_arr);
return $name_arr;
}

最佳答案

你不能用简单的正则表达式匹配来解析 SQL...当表被别名时会发生什么?什么时候有子查询?交叉连接?工会?等等。SQL语法相当丰富。

寻找 SQL 解析器。例如:

https://code.google.com/p/php-sql-parser/

关于php - 使用 PHP 从任何选择查询中提取表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17058711/

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