使用PHP,Oracle和Zend 1.12。我有一个查询:
SELECT * FROM tablename WHERE id = 1;
通常它应该返回一行,但不知何故,在更改Oracle服务器之后(这使我认为这个问题是数据库配置问题),它什么都不返回。现在,将整数1引用为:
SELECT * FROM tablename WHERE id = '1';
它会返回该行。通过返回,我说结果显示给PHP。 例如,如果我在SQL Developer中运行相同的未加引号的查询,它会正确返回行,这使我相信它不是数据库配置问题,而是Zend的。
但是同一个项目正在其他服务器上使用,并且没有任何问题可以返回未加引号的1个值。
它只发生在1.任何更大或小于1的东西都能完美地运作。
建议去哪儿看?
答案 0 :(得分:0)
将NLS_NUMERIC_CHARACTERS设置为",。"固定发布的手册说明:
如果您已建立除句点(。)以外的十进制字符 用初始化参数NLS_NUMERIC_CHARACTERS,然后你 必须使用' text'指定数字文字。符号。在这些情况下, Oracle会自动将文本文字转换为数字值。
https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements003.htm
Oracle 10.2g确认了此行为。