我对pdo_odbc和PDO :: FETCH_OBJ(以及PDO :: FETCH_CLASS)有一个奇怪的问题,导致以下错误消息:
PHP Fatal error: Cannot access empty property
Run Code Online (Sandbox Code Playgroud)
这是代码:
$dbh = new PDO("odbc:FOO");
$sth = $dbh->query("
SELECT rolename
FROM dbc.allrolerights
WHERE databasename = 'BAR'
");
$result = $sth->fetch(PDO::FETCH_OBJ);
Run Code Online (Sandbox Code Playgroud)
作为参考,FOO DSN是使用tdodbc软件包提供的tdata.so驱动程序的Teradata数据源.
我相信这种情况正在发生,因为当PDO调用zend_API.h:object_init_ex()来实例化stdClass对象时,字段名称(从ODBC查询返回)是空白的.如果我切换到PDO :: FETCH_LAZY和var_dump()行,我得到以下内容:
object(PDORow)#3 (2) {
["queryString"]=>
string(95) "
SELECT rolename
FROM dbc.allrolerights
WHERE databasename = 'BAR'
"
[""]=>
string(30) "FNAR "
}
Run Code Online (Sandbox Code Playgroud)
这似乎支持它.我已经尝试了几种不同的PDO属性组合和一堆不同的角度来解决这个问题.一种解决方案是获取关联数组并将其传递给类构造函数.但是,这对于在幕后直接使用PDO :: FETCH_CLASS的某些框架和ORM不起作用.
我想补充一点,其他fetch方法似乎做对了,例如,PDO :: FETCH_NAMED:
array(1) {
["RoleName"]=>
string(30) "FNAR "
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找可以放在PDO dbh或sth定义中的东西,或者用于数据源或驱动程序的odbc.ini或odbcinst.ini来解决此问题.先感谢您.
更新: odbc_fetch_object()(即不是PDO)与完全相同的一切都很好.只是想提一下.显然,PHP,unixODBC或ODBC驱动程序似乎没有任何严重问题.它是PDO代码中的一部分.是时候打开一个错误报告...... 打开了
$dbh = odbc_connect("FOO", NULL, NULL) …Run Code Online (Sandbox Code Playgroud) 是否可以设置一个动态变量来保存 HTTP 标头的内容(例如 Host/X-Forwarded-Host)并稍后在 ACL 中使用?
frontend web1
# ...
set-var s1(Host)
acl site1 hdr_end(host) -i %[s1]
# ...
use_backend %[s1] if site1
Run Code Online (Sandbox Code Playgroud) 如何在html按钮标签内嵌入链接?
这是我试过的 -
<button {{link-to "posts.show" post}}>
Show
</button>
Run Code Online (Sandbox Code Playgroud)
获得未出错的错误:没有命名的路线
embercli@model:post::ember506:6
Run Code Online (Sandbox Code Playgroud)