|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2009-04-30 16:08 UTC] theodoreb at goshen dot edu
Description:
------------
odbc_cursor() returns empty string when the connection is created using odbc_connect() with SQL_CUR_USE_ODBC as the fourth parameter.
Using unixODBC-2.2.12 and freetds-0.82-r2 to connect to Microsoft SQL Server 2008.
Reproduce code:
---------------
$conn = odbc_connect("mssql", "login", "passwd",SQL_CUR_USE_ODBC);
$query = "SELECT *
FROM tablename";
$cur = odbc_exec($conn,$query);
echo odbc_cursor($cur);
Expected result:
----------------
cursor name of $cur, something like SQL_CURa70b90
Actual result:
--------------
empty string ''
Patchesodbc-bug-48122 (last revision 2011-01-17 15:48 UTC by kalle@php.net)Pull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 08 20:00:02 2025 UTC |
Try this: <?php error_reporting(E_ALL); $conn = odbc_connect("mssql", "login", "passwd",SQL_CUR_USE_ODBC); var_dump($conn, odbc_errormsg($conn)); $query = "SELECT * FROM tablename"; $cur = odbc_exec($conn,$query); var_dump(odbc_errormsg($conn)); echo odbc_cursor($cur); var_dump(odbc_errormsg($conn)); ?>Thanks for responding. I tried your code as follow: error_reporting(E_ALL); $conn = odbc_connect("mssql", "login", "passwd",SQL_CUR_USE_ODBC); var_dump($conn, odbc_errormsg($conn)); $query = "SELECT * FROM tablename"; $cur = odbc_exec($conn,$query); var_dump(odbc_errormsg($conn)); echo odbc_cursor($cur); var_dump(odbc_errormsg($conn)); Here is the result: resource(16) of type (odbc link) string(0) "" string(0) "" string(0) ""patch failed to apply with the following error: patching file php_odbc.c Hunk #1 FAILED at 1470. Hunk #2 succeeded at 1205 (offset -274 lines). 1 out of 2 hunks FAILED -- saving rejects to file php_odbc.c.rej and from the php_odbc.c.rej file: *************** *** 1470,1477 **** if (max_len > 0) { cursorname = emalloc(max_len + 1); rc = SQLGetCursorName(result->stmt,cursorname,(SQLSMALLINT)max_len,&len); - if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { - char state[6]; /* Not used */ SQLINTEGER error; /* Not used */ char errormsg[SQL_MAX_MESSAGE_LENGTH]; SQLSMALLINT errormsgsize; /* Not used */ --- 1470,1477 ---- if (max_len > 0) { cursorname = emalloc(max_len + 1); rc = SQLGetCursorName(result->stmt,cursorname,(SQLSMALLINT)max_len,&len); + if ((rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) || !cursorname) { + char state[6]; SQLINTEGER error; /* Not used */ char errormsg[SQL_MAX_MESSAGE_LENGTH]; SQLSMALLINT errormsgsize; /* Not used */