检查有效的 SQL 列名称
2022-08-30 14:37:22
如何在php中检查字符串是否是sql语句的有效兼容列名?只是一个字符串匹配。
如何在php中检查字符串是否是sql语句的有效兼容列名?只是一个字符串匹配。
最终,每个字符串一旦用双引号括起来就是有效的列名(MySQL可能不遵守该规则,具体取决于配置。在默认安装中,它不使用双引号作为标识符引号)。
但是,如果您希望跨平台(如不同的DBMS标记所建议的那样),则应检查最小公分母。
SQL 标识符和关键字必须以字母(a-z,但也包括带有变音符号和非拉丁字母的字母)或下划线 (_) 开头。标识符或关键字中的后续字符可以是字母、下划线、数字 (0-9) 或美元符号 ($)。请注意,根据SQL标准的字母,标识符中不允许使用美元符号,因此使用它们可能会使应用程序的可移植性降低
因此,您应该使用正则表达式检查以下内容:
因此,如下所示的正则表达式应涵盖以下内容:
^[a-zA-Z_][a-zA-Z0-9_]*$
由于SQL不区分大小写(除非使用双引号),因此允许使用大写和小写字母。
您可以按如下方式使用 MySQL 查询来获取特定表中的字段:
SHOW FIELDS FROM tbl_name
然后是一些简单的PHP:
$string_to_check = 'sample';
$valid = false;
$q = mysql_query("SHOW FIELDS FROM tbl_name");
while($row = mysql_fetch_object($q)) {
if($row->Field == $string_to_check) {
$valid = true; break;
}
}
if($valid) {
echo "Field exists";
}