Home » Database » DB » Bug #5406
DB_FETCHMODE_ASSOC don't works with MSSQL
Details
| Submitted | 2005-09-14 22:13 UTC |
|---|---|
| From | leonardo at absbrasil dot com |
| Assigned | danielc |
| Status | Duplicate |
| Package | DB |
| PHP Version | 4.3.11 |
| OS | Linux |
| Roadmaps | (Not assigned) |
Comments
[2005-09-14 22:13 UTC] leonardo at absbrasil dot com
Description:
------------
Using :
DB version 1.7.6
MSSQL Server 2000
When performing a simple query on MSSQL database and set up DB_FETCHMODE_ASSOC to fetching the result its return a NULL value.
I fix it removing the second parameter the is passed in mssql_fetch_array() function.
ie on line 320 inside of fetchInto() method.
The second parameter is no needed, only old php versions it's possible.
Test script:
---------------
/*
require_once 'DB.php';
$sql = "SELECT top 100 * from myTable";
$dsn = "mssql://user:pass@myhost:1433/MyDB";
$db = &DB::connect($dsn);
$res = $db ->query($sql);
$res->fetchInto($row, DB_FETCHMODE_ASSOC);
var_dump($row);
*/
Expected result:
----------------
a associative array with result
Actual result:
--------------
a null value
[2005-09-15 01:59 UTC] leonardo at absbrasil dot com
if ($fetchmode & DB_FETCHMODE_ASSOC) {
- $arr = @mssql_fetch_assoc($result);
+ /* If php was compiled with sybase_ct support */
+ if(function_exists('mssql_fetch_assoc')){
+ $arr = @mssql_fetch_assoc($result);
+ } else {
+ /* This is bad because a double array is returned (ORDERED AND ASSOC ) */
+ $arr = @mssql_fetch_array($result);
+ }
if ($this->options['portability'] & DB_PORTABILITY_LOWERCASE && $arr) {
$arr = array_change_key_case($arr, CASE_LOWER);
}