文字

mssql_fetch_assoc

(PHP 4 >= 4.2.0, PHP 5, PECL odbtp >= 1.1.1)

mssql_fetch_assocReturns an associative array of the current row in the result

说明

array mssql_fetch_assoc ( resource $result_id )

Returns an associative array that corresponds to the fetched row and moves the internal data pointer ahead. mssql_fetch_assoc() is equivalent to calling mssql_fetch_array() with MSSQL_ASSOC for the optional second parameter.

参数

result_id

The result resource that is being evaluated. This result comes from a call to mssql_query() .

返回值

Returns an associative array that corresponds to the fetched row, or FALSE if there are no more rows.

范例

Example #1 mssql_fetch_assoc() example

<?php
// Send a select query to MSSQL
$query  mssql_query ( 'SELECT [username], [name] FROM [php].[dbo].[userlist]' );

// Check if there were any records
if (! mssql_num_rows ( $query )) {
    echo 
'No records found' ;
}
else
{
    
// Print a nice list of users in the format of:
    // * name (username)

    
echo  '<ul>' ;

    while (
$row  mssql_fetch_assoc ( $query )) {
        echo 
'<li>'  $row [ 'name' ] .  ' ('  $row [ 'username' ] .  ')</li>' ;
    }

    echo 
'</ul>' ;
}

// Free the query result
mssql_free_result ( $query );
?>

用户评论:

[#1] simonh at dreameyemedia dot com [2008-12-28 02:35:45]

With the code mentioned above and in relation to a MSSQL query.

When using the following statements  to retrieve dat "fetch_assoc" then running a split statement PHP it then into a array it will not pass the data retrieved will show correctly in a XML document created by the DOM object.

<?php
require("phpsqlajax_dbinfo.php");

// Start XML file, create parent node

$dom = new DOMDocument("1.0");
$node $dom->createElement("markers");
$parnode $dom->appendChild($node);

// Opens a connection to a DreameyeOne server
$connection=mssql_connect ("ELF\ELF"$username$password);
if (!
$connection) {
  die(
'Not connected : ' mssql_error());
}

// Set the active DreameyOne database
$db_selected mssql_select_db($database$connection);
if (!
$db_selected) {
  die (
'Can\'t use db : ' mssql_error());
}

// Select all the rows in the markers table
$query "SELECT msg FROM ozekimessagein ORDER BY senttime DESC";
$result mssql_query($query);
if (!
$result) {
  die(
'Invalid query: ' mssql_error());
}
header("Content-type: text/xml");
// Iterate through the rows, adding XML nodes for each
while ($row = @mssql_fetch_assoc($result)) {
      list (
$vehicleID,$long,$lat) = split(',',$row);
// ADD TO XML DOCUMENT NODE
      
$node $dom->createElement("marker");
      
$node $dom->createElement("marker");
      
$newnode $parnode->appendChild($node);
      
$newnode->setAttribute("VehicleID:",$vehicleID);
      
$newnode->setAttribute("lat",$lat);
      
$newnode->setAttribute("long",$long);
}

echo 
$dom->saveXML();

?>


Merlinman

[#2] pegas1981 [2007-05-22 04:41:09]

[quote]
WARNING:

PHP 4.3.4 introduced a BUG.

if the DB has: '' (empty string)
this function will return: ' ' (string with 1 space)

see: http://bugs.php.net/bug.php?id=26315
[/quote]
the same version PHP 5.2.0

[#3] [2007-03-24 21:25:41]

regarding 'The 30 character field name limit is still an issue'

Thought about using shorter column names and using the description to give more info regarding the column.

as to the 
$result = mssql_query('SELECT articles.id, issues.id FROM articles, issues WHERE articles.pub_date = issues.pub_date');

try this
$result = mssql_query('SELECT articles.id as aid, issues.id as iid FROM articles, issues WHERE articles.pub_date = issues.pub_date');

[#4] jbarker at erepublic dot com [2007-01-24 09:35:14]

Beware when using mssql_fetch_assoc() to return data pulled in from joined tables; if the tables have the same column names, the column mentioned last will overwrite the prior one when populating the assoc.

Example:

<?php
$result 
mssql_query('SELECT articles.id, issues.id FROM articles, issues WHERE articles.pub_date = issues.pub_date');
$record mssql_fetch_assoc($result);
print_r($record);


?>

[#5] brandonkirsch at uses dot gmail dot domain [2006-12-11 10:43:15]

We are running FreeTDS on a Linux Apache / PHP server and encountered the following error when calling mssql_fetch_assoc()

Fatal error: Call to undefined function mssql_fetch_assoc()

We were confused because *some* of the mssql commands worked, such as mssql_connect and mssql_fetch_array.  The trick to make mssql_fetch_assoc() work lies in configuring FreeTDS.  We had to change the statement to contain the --enable-msdblib switch:

./configure --enable-msdblib

We then recompiled PHP to include --with-mssql=/path/to/freetds and finally mssql_fetch_assoc() began working properly.

[#6] ben at thelocust dot org [2006-11-03 12:22:59]

The 30 character field name limit is still an issue as of PHP 5.1.6, at least running under IIS.

[#7] electricsurfer.com [2003-12-01 20:38:53]

WARNING:

PHP 4.3.4 introduced a BUG.

if the DB has: '' (empty string)
this function will return: ' ' (string with 1 space)

see: http://bugs.php.net/bug.php?id=26315

[#8] php at electricsurfer dot com [2003-06-03 11:34:27]

WARNING: as of PHP 4.3.2

The keys in the array will only contain the 1st 30 characters of the column name if you have column names longer than that.

上一篇: 下一篇: