SQL查询列名含空格运行报错 不修改数据库列名的解决办法
带空格列名的SQL查询解决方案
当列名包含空格、特殊字符或者和SQL关键字重名时,只需要使用对应数据库支持的标识符包裹符将带空格的列名包裹即可,无需修改原有列名,不同数据库的对应方案如下:
- MySQL / MariaDB 环境:使用反引号
`包裹带空格的列名,修改后的查询语句如下:
select * from data where `Customer Name` = '".$uname."' limit 1
- SQL Server / Access 环境:使用方括号
[]包裹带空格的列名,修改后的查询语句如下:
select * from data where [Customer Name] = '".$uname."' limit 1
- Oracle / PostgreSQL / 开启QUOTED_IDENTIFIER配置的SQLite 环境:使用双引号
"包裹带空格的列名,修改后的查询语句如下:
select * from data where "Customer Name" = '".$uname."' limit 1
注意:你当前的写法直接将用户输入变量
$uname拼接进SQL语句,存在极高的SQL注入风险,建议改用预处理语句+参数绑定的方式传递查询参数,避免安全问题。
内容的提问来源于stack exchange,提问作者Saeed Eisakhani
相关产品推荐
相关产品推荐

