问题标签 [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.

0 投票
0 回答
90 浏览

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 而不是转储,我得到了这个结果:

谢谢你。

0 投票
1 回答
46 浏览

sql-server - 为什么 dbTimeStamp() 添加逗号?

我有以下代码:

在查询中使用它会产生这样的时间戳:

但是,该逗号似乎导致 SQL Server 2005 中的查询失败。有没有办法让它不包含该逗号。

我在 Debian 10 上运行 PHP 7.4,使用 odbc 驱动程序连接到 SQL Server 2005。

编辑:这是我在查询中使用它的方式:

0 投票
1 回答
34 浏览

php - Oracle 字符集设置

我在 ORACLE 中使用 adodb 对特殊字符(如“Ñ”、“á”)有疑问:当保存在 varchar2/varchar 字段中时,请保存其他字符“¿”。

如果与 oci8 conect (direct to oracle) 连接,则特殊字符会正确保存。

连接时如何设置字符集?

($db->Connect(TNS_database, USER, PASSword));

谢谢 !!!