问题标签 [adodb-php]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 无法选择包含重音符号的列名
问题
我实际上正在使用 Symfony 5 进行一个新网站项目。由于我必须访问存储我们所有产品详细信息的历史数据库,因此我必须使用 AdoDb 以便我可以使用 odbc 驱动程序(因为原则不允许使用它)。
当我尝试选择带重音的字段时,查询失败并抛出S0022错误代码。完整的错误信息是:
"[Simba][SQLEngine] (31750) Column not found: ar1_händlerpreis"
看到ar1_händlerpreis
包含一个似乎是问题的“ä”字符。
我已经尝试过的
这是我的查询代码。查看ar1_händlerpreis
“Prepare”函数第一个参数中存在的内容。
我尝试将查询字符串中的字段 ar1_händlerpreis 编辑为:
- ar1_h[ä]ndlerpreis (如此处所述)
- `ar1_händlerpreis`(周围有backstick ...因为我知道有些字段需要转义)
- ar1_händlerpreis || '' (正如此处解释的那样,它可能已将列名转换为不应产生错误的表达式)
- ar1_händlerpreis + 0(与上一个相同,可能已转换为表达式)
我还尝试更改用于访问数据库的编码字符:
$this->_db->setConnectionParameter('CharacterSet','UTF-8');
(在这里解释)
但是什么都做...
一些代码
我为您提供更多代码,看看我是否做错了什么。
这是我需要连接到历史数据库时使用的 ADOdbConnection 服务。大多数时候,我将 Doctrine 用于网站特定的数据库。
它可以正常工作,连接到数据库。
然后,这是我的产品(文章)表的 DAL:
此代码显示以下结果:
第 37 行的 ArticleDal.php:“选择 ar1_artikelnummer、ar2_mwststeuerschl、ar1_bestand、ar1_klassifizierung、ar1_bezeichnung3、ar1_apothekenpreis、ar1_händlerpreis + 0 AS apreis FROM artikeldaten WHERE ar1_artikelnummer IN(?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?,?)”
第 39 行的 ArticleDal.php:“S0022”
第 40 行的 ArticleDal.php:“[Simba][SQLEngine] (31750) 未找到列:ar1_händlerpreis”
第 41 行的 ArticleDal.php:错误
还有一个返回 a 的示例SELECT *
(我将其截断,因为它有 360 列......):
字段前面的那些带有重音的小“b”很奇怪(对于 ar1_händlerpreis 和 ar1_preislistenänder)。dump()是 Symfony 框架的调试函数。
如果我使用 var_dump 而不是转储,我得到了这个结果:
谢谢你。
sql-server - 为什么 dbTimeStamp() 添加逗号?
我有以下代码:
在查询中使用它会产生这样的时间戳:
但是,该逗号似乎导致 SQL Server 2005 中的查询失败。有没有办法让它不包含该逗号。
我在 Debian 10 上运行 PHP 7.4,使用 odbc 驱动程序连接到 SQL Server 2005。
编辑:这是我在查询中使用它的方式:
php - Oracle 字符集设置
我在 ORACLE 中使用 adodb 对特殊字符(如“Ñ”、“á”)有疑问:当保存在 varchar2/varchar 字段中时,请保存其他字符“¿”。
如果与 oci8 conect (direct to oracle) 连接,则特殊字符会正确保存。
连接时如何设置字符集?
($db->Connect(TNS_database, USER, PASSword));
谢谢 !!!