生产环境PostgreSQL大写列名PHP查询语法错误求助
解决PostgreSQL大写列名+PHP SQL拼接的语法错误问题
问题根源
你直接拼接$date变量时,没有给日期值加上单引号,导致生成的SQL语句里日期部分缺少必要的单引号,触发语法错误。
解决办法
方法1:手动添加单引号并转义(基础写法)
在拼接$date时,给变量前后加上单引号,同时用pg_escape_string()转义特殊字符,避免SQL注入或字符串格式错误:
$escaped_date = pg_escape_string($dbconn, $date); $sqlx = pg_query($dbconn, 'SELECT public.countryhomes."PH" from public.countryhomes where public.countryhomes."Read_Datetime" = \'' . $escaped_date . '\'');
方法2:使用参数化查询(推荐,更安全)
用PostgreSQL的参数化查询功能,让数据库自动处理参数的引号和转义,彻底避免拼接错误和SQL注入风险:
$sql = 'SELECT public.countryhomes."PH" from public.countryhomes where public.countryhomes."Read_Datetime" = $1'; $sqlx = pg_query_params($dbconn, $sql, [$date]);
这里$1是参数占位符,pg_query_params会自动把$date的值安全传入SQL,不需要手动加单引号。
内容的提问来源于stack exchange,提问作者kins
相关产品推荐
相关产品推荐

