我想为表添加前缀,最近编写了一个 PHP 脚本来提取字符串 SQL 查询中的所有表。
$sql = 'UPDATE festivals SET desc = "Starts from July"';
preg_match_all('/(from|into|update|table|join) (`?\w+`?)\s/i', $sql, $matches);
它工作得很好,但唯一的问题是它会提取July
,因为它不区分 SQL 值和真实的表名,所以它假设这July
也是一个表。
现在我认为解决方案应该是防止提取包含在单引号或双引号中的内容,但不知道该怎么做。