针对 Holger 关于使用 @@identity 的评论
小心。如果您插入的表具有一个触发器,该触发器还会插入另一个具有标识列的表,您将获得该其他表的键!使用 scope_identity() 而不是 @@identity
针对 Holger 关于使用 @@identity 的评论
小心。如果您插入的表具有一个触发器,该触发器还会插入另一个具有标识列的表,您将获得该其他表的键!使用 scope_identity() 而不是 @@identity
我发现这是 7.5.00 版本 MaxDB 特殊驱动程序的完美替代方案。它们在 *nix 上安装起来并不容易。Windows 似乎没问题。无论如何,ODBC 是将 SAPDB/MaxDB 连接到 PHP 的完美替代方案。
可以在这里找到 odbc 替代方案(而不是 MAXDB-php 驱动程序)的安装指南
http://maxdb.yapabout.com/viewtopic.php?t=21
在我寻找一个函数来检索插入行的 NewID(该行具有自动增量)时,我找到了像 mysql_insert_id 一样的解决方案,用于与 MS-Access 的 ODBC 连接
<?
// 在下面建立连接
$Connection = odbc_connect(...);
$Result = odbc_exec($Connection, "select @@identity");
$NewID = odbc_result($Result, 1);
odbc_free_result($Result);
// 在这里进行所有您想要使用 NewID 做的操作
odbc_close($Connection);
?>
我认为这也适用于 MS-SQL-Server 和 Sybase - 通过 ODBC 和直接 (mssql_.../sybase_...)。
希望对您有所帮助...
此致
Holger
我搜索了为什么 Windows + Apache 2.0.X 下的网络远程驱动器上的 odbc 连接无法执行查询的解决方案,但似乎没有人提供解决方案。
实际上,这很简单。
转到控制面板 -> 服务;
找到并双击“Apache2”;
在“登录”页面中,选择“以以下帐户登录”,并在 Web 服务器系统中提供一个具有控制网络远程驱动器权限的帐户;
最后,重启 Apache,就是这样。
您是否想知道为什么使用 IBM DB2 Universal Database for Linux, UNIX, and Windows 时数据检索速度非常慢?Unified ODBC 使用的默认游标类型不受 DB2 支持,因此它将降级为仅向前游标 - 并且该协商会在每次行提取时发生。
强制您的 PHP 应用程序使用仅向前游标的一种方法是使用方便的 CLI patch2 设置值 6 修改您的 DB2 客户端配置
$ db2 UPDATE CLI CONFIGURATION FOR SECTION dbname USING patch2 6
您必须在运行 PHP 应用程序的同一台机器上更新此客户端设置。这适用于 Windows 操作系统以及 Linux 和 UNIX 操作系统。
我运行了一些基本基准测试(从远程数据库服务器获取包含 3 个 INTEGER 列的 10,000 行数据),并得出结论,此设置可以对应用程序速度产生重大影响
没有 CLI patch2 设置:约 22 秒
有 CLI patch2 设置:约 1.75 秒
请注意,使用此 patch2 设置(或使用仅向前游标的任何其他方法)的缺点是,odbc_num_rows() 始终为受 SELECT 语句影响的行数返回“-1”。
如果捆绑的 ODBC 库在某些字段格式(如 Pervasive.SQL 中的一些 REAL)上出现问题,请查看 http://odbtp.sourceforge.net/.
在经历了许多麻烦之后,我采用了 odbtp:它是一个非常可靠的库,最重要的是它不依赖于特定的操作系统。
如果您收到一个错误,指出“连接正忙于处理另一个 hstmt 的结果,SQL 状态为 S1000,在 SQLExecDirect 中”,请尝试使用 SQL_CURSOR_FORWARD_ONLY 选项打开您的 odbc 连接
<?php
$db_link = odbc_connect($dsn, $username, $password, SQL_CURSOR_FORWARD_ONLY)
or die('Error connecting to server. Server says: '.htmlspecialchars(odbc_errormsg()));
?>
Windows 64 中使用 ODBC 的注意事项
我确信 PHP 在 Windows 64 位系统上只能访问 32 位 ODBC 内容。因此,您需要通过位于以下位置的数据源管理员配置您的 ODBC DSN:
/WINDOWS/SysWOW64/odbcad32.exe