2024 年 PHP Conference Japan

ODBC 函式

目錄

新增筆記

使用者貢獻的筆記 9 則筆記

Quickdraw
19 年前
回覆 Holger 關於使用 @@identity 的評論

請小心。如果您插入資料的表格具有也會插入到另一個具有識別欄位的表格的觸發程序,您將會取得另一個表格的鍵值!請使用 scope_identity() 而不是 @@identity
sven at ajaxtechforums dot com
18 年前
我發現這是 7.5.00 版 MaxDB 特殊驅動程式的完美替代方案。只是在 *nix 上安裝並不容易。Windows 似乎沒問題。無論如何,ODBC 是將 SAPDB/MaxDB 連接到 PHP 的完美替代方案。

odbc 替代方案(而非 MAXDB-php 驅動程式)的安裝指南可在此處找到

http://maxdb.yapabout.com/viewtopic.php?t=21
vbwebprofi at gmx dot de
21 年前
在搜尋用於擷取具有自動遞增的插入列之 NewID 的函式時,我找到了這個解決方案,就像用於 ODBC 連線到 MS-Access 的 mysql_insert_id 一樣

<?
// 在下方建立您的連線
$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
匿名
19 年前
我搜尋了為什麼 Windows + Apache 2.0.X 下網路遠端磁碟機的 odbc 連線無法提供查詢的解決方案,但似乎沒有人提供解決方案。

事實上,這非常簡單。
前往控制台 -> 服務;
找到並雙擊「Apache2」;
在「登入」頁面中,選擇以「這個帳戶」登入,並在網路伺服器系統中提供具有控制網路遠端磁碟機權限的帳戶;
最後,重新啟動 Apache,就這樣了。
denials at gmail dot com
19 年前
您是否曾經好奇為什麼使用 IBM DB2 Universal Database for Linux、UNIX 和 Windows 時,資料擷取時間非常慢?Unified ODBC 使用的預設游標類型不受 DB2 支援,因此它會被降級為僅向前游標,而且每次擷取列時都會進行協商。

強制 PHP 應用程式使用僅向前游標的一種方法是使用方便的 CLI patch2 設定值 6 修改您的 DB2 用戶端設定

$ db2 UPDATE CLI CONFIGURATION FOR SECTION dbname USING patch2 6

您必須在執行 PHP 應用程式的同一台機器上更新此用戶端設定。這適用於 Windows 作業系統以及 Linux 和 UNIX 作業系統。

我執行了一些基本的基準測試(從遠端資料庫伺服器擷取 10,000 個包含 3 個 INTEGER 欄位的列),並得出結論,此設定可能會對您的應用程式速度產生重大影響。

未設定 CLI patch2:約 22 秒
設定 CLI patch2:約 1.75 秒

請注意,使用此修補程式設定(或任何其他使用僅向前游標的方法)的缺點是,odbc_num_rows() 永遠會針對受 SELECT 陳述式影響的列數傳回「-1」。
pascals at NOSPAM dot pobox dot com
20 年前
如果內建的 ODBC 函式庫在某些欄位格式(例如來自 Pervasive.SQL 的某些 REAL)上遇到問題,請查看 http://odbtp.sourceforge.net/.

在經歷許多麻煩之後,我採用了 odbtp:它是一個非常穩定的函式庫,最重要的是,它不綁定到特定的作業系統。
xangelusx at hotmail dot com
19 年前
如果您收到錯誤訊息「連線正忙於處理另一個 hstmt 的結果,SQL 狀態 S1000 in SQLExecDirect」,請嘗試使用 SQL_CURSOR_FORWARD_ONLY 選項開啟您的 odbc 連線。

<?php
$db_link
= odbc_connect($dsn, $username, $password, SQL_CURSOR_FORWARD_ONLY)
or die(
'無法連線到伺服器。伺服器訊息:'.htmlspecialchars(odbc_errormsg()));
?>
chaz_meister_rock at yahoo dot com
17 年前
Windows 64 位元版 ODBC 的注意事項

我很確定 PHP 在 Windows 64 位元版上只會存取 32 位元 ODBC 資源。因此,您需要透過位於以下位置的資料來源管理員來設定您的 ODBC DSN:

/WINDOWS/SysWOW64/odbcad32.exe
匿名
18 年前
我使用 odbc 從 MS SQL Server 擷取資料時,只有在查詢使用 join 時才會遇到嚴重的效能問題。

我發現,我必須使用游標類型「SQL_CUR_USE_ODBC」進行連線,這樣就沒問題了。

$conn = odbc_connect("ShopLive", 'shop', 'xxx', SQL_CUR_USE_ODBC);
To Top