<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>basketweaving for the mind : sqlserver</title><link>http://blogs.msdn.com/nickhodge/archive/tags/sqlserver/default.aspx</link><description>Tags: sqlserver</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Demos and Links from Edge of the Web, Nov’08 Perth</title><link>http://blogs.msdn.com/nickhodge/archive/2008/11/11/demos-and-links-from-edge-of-the-web-nov-08-perth.aspx</link><pubDate>Tue, 11 Nov 2008 06:08:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9059152</guid><dc:creator>nhodge</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/9059152.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=9059152</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=9059152</wfw:comment><description>&lt;p&gt;During the 50 minutes of presentation (including at least 9 &lt;a href="http://icanhascheezburger.com/"&gt;ICHC&lt;/a&gt; images), I demonstrated the following bits and pieces of open source and or free Microsoft bits.&lt;/p&gt;  &lt;h3&gt;Demo set 1: Web Standards&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.mesh.com/"&gt;Live Mesh Mobile&lt;/a&gt; : take photo to mesh on laptop &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;MacOS X 10.5 client available too [&lt;em&gt;not demo’d&lt;/em&gt;] &lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;a href="http://dev.live.com/"&gt;DataModelBrowser to apis.mesh.com&lt;/a&gt;; showing REST/JSON/APP [part of Live Framework SDK]&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/Oomph"&gt;Oomph: Microformats toolkit&lt;/a&gt; (source on codeplex.com) incorporating:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://get.live.com/writer/overview"&gt;LiveWriter&lt;/a&gt;; hCard plugin; publish; show IE plugin, same site with &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/2240?id=2240"&gt;Firefox Tail&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;h3&gt;Demo set 2: PHP, SQLServer 2008 &amp;amp; IIS7 &lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/nickhodge/archive/2008/08/19/in-which-i-get-my-own-iis7.aspx"&gt;IIS7/PHP; Modules mapping via FastCGI&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/web/channel/downloads/default.aspx"&gt;Microsoft Web Platform Installer and Web Application Installer&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/SQL2K5PHP"&gt;MSSQLPHPDriver; show PHP + results; codeplex&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Demo set 3: IronPython&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.codeplex.com/IronPython"&gt;IronPython&lt;/a&gt;; ipy hello world winforms &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/aspnet/Wiki/View.aspx?title=Dynamic%20Language%20Support"&gt;using as aspx as &amp;quot;code behind&amp;quot; and ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://research.microsoft.com/fsharp/fsharp.aspx"&gt;F#&lt;/a&gt; integration with via .NET compiled .dll&amp;#160; (calling from IronPython)&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Demo set 4: IronRuby&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.ironruby.net/"&gt;IronRuby&lt;/a&gt;; flickr.net example from &lt;a href="http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV-HQ/TL44.wmv"&gt;John Lam’s PDC2008 session&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.jimmy.schementi.com/2008/08/walk-through-silverlight-flickr-client.html"&gt;Photoviewer&lt;/a&gt;; using local Chiron, browser, ruby in browser doing HTML/DOM &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Demo set 5: Silverlight&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Silverlight 2 tools for Visual Studio now support Visual Studio Express &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Silverlight 2 also supporting Eclipse (see, competition is a good thing) &lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/Silverlight"&gt;Silverlight Toolkit&lt;/a&gt;, run from chrome-less Google Chrome (contains &lt;a href="http://www.hanselman.com/blog/TheWeeklySourceCode33MicrosoftOpenSourceInsideGoogleChrome.aspx"&gt;Microsoft Windows Template Lib&lt;/a&gt;)&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9059152" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/sqlserver/default.aspx">sqlserver</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/php/default.aspx">php</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/iis7/default.aspx">iis7</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/codeplex/default.aspx">codeplex</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/opensource/default.aspx">opensource</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ruby/default.aspx">ruby</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/f_2300_/default.aspx">f#</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/microformats/default.aspx">microformats</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ironruby/default.aspx">ironruby</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ironpython/default.aspx">ironpython</category></item><item><title>October 2008 Update: Microsoft SQL Server 2005 Driver for PHP</title><link>http://blogs.msdn.com/nickhodge/archive/2008/10/20/october-2008-update-microsoft-sql-server-2005-driver-for-php.aspx</link><pubDate>Mon, 20 Oct 2008 00:44:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9006670</guid><dc:creator>nhodge</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/9006670.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=9006670</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=9006670</wfw:comment><description>&lt;p&gt;Now available, prebuilt is &lt;a title="available for download" href="http://go.microsoft.com/fwlink/?LinkId=123470"&gt;available for download&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Source is also available from Codeplex: &lt;a title="CodePlex" href="http://www.codeplex.com/SQL2K5PHP"&gt;CodePlex&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9006670" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/sqlserver/default.aspx">sqlserver</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/php/default.aspx">php</category></item><item><title>SQL Server Driver for PHP: Last Inserted Row ID</title><link>http://blogs.msdn.com/nickhodge/archive/2008/09/23/sql-server-driver-for-php-last-inserted-row-id.aspx</link><pubDate>Mon, 22 Sep 2008 16:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8961181</guid><dc:creator>nhodge</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/8961181.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=8961181</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=8961181</wfw:comment><description>&lt;P&gt;After a mysql_query with an INSERT statement, a quick call to &lt;STRONG&gt;mysql_insert_id&lt;/STRONG&gt; provides the ID of the last inserted row.&lt;/P&gt;&lt;PRE class=csharpcode&gt;$lastRow = mysql_insert_id($link);&lt;/PRE&gt;
&lt;P&gt;How do you accomplish the same with the SQL Server Driver for PHP?&lt;/P&gt;
&lt;P&gt;In this extended example, it’s a simple matter of adding some extra SQL to the INSERT statement, and popping the result from the query.&lt;/P&gt;&lt;PRE class=csharpcode&gt;&amp;lt;?php 

    &lt;SPAN class=kwrd&gt;function&lt;/SPAN&gt; lastInsertId($queryID) {
        sqlsrv_next_result($queryID);
        sqlsrv_fetch($queryID);
        &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; sqlsrv_get_field($queryID, 0);
    } 

    $serverName = &lt;SPAN class=str&gt;'.\SQLEXPRESS'&lt;/SPAN&gt;;
    $connectionInfo = array( &lt;SPAN class=str&gt;"Database"&lt;/SPAN&gt;=&amp;gt;&lt;SPAN class=str&gt;"&lt;EM&gt;database&lt;/EM&gt;"&lt;/SPAN&gt; ); 

    &lt;SPAN class=rem&gt;/* Connect using Windows Authentication. */&lt;/SPAN&gt;
    $conn = sqlsrv_connect( $serverName, $connectionInfo );
    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt;( $conn === &lt;SPAN class=kwrd&gt;false&lt;/SPAN&gt; )
    {
        echo &lt;SPAN class=str&gt;"Unable to connect.&amp;lt;/br&amp;gt;"&lt;/SPAN&gt;;
        die( print_r( sqlsrv_errors(), &lt;SPAN class=kwrd&gt;true&lt;/SPAN&gt;));
    } 

    &lt;SPAN class=rem&gt;/* Define the Transact-SQL query. Use question marks as parameter placeholders. */&lt;/SPAN&gt;
    $insertSQL = &lt;SPAN class=str&gt;"INSERT INTO &lt;EM&gt;table&lt;/EM&gt;
              (&lt;EM&gt;message&lt;/EM&gt;, &lt;EM&gt;fromuser&lt;/EM&gt;) 
              VALUES (? , ?) "&lt;/SPAN&gt;; 

    &lt;SPAN class=rem&gt;/* Initialize $message and $from */&lt;/SPAN&gt;
    $message = &lt;SPAN class=str&gt;"Please call me"&lt;/SPAN&gt;; 
    $fromuser = &lt;SPAN class=str&gt;"Nick Hodge"&lt;/SPAN&gt;; 

    &lt;SPAN class=rem&gt;/* special Transact-SQL addition to the SQL insert statement. It will return the last insert ID */&lt;/SPAN&gt;
    $insertSQL .= &lt;SPAN class=str&gt;"; SELECT SCOPE_IDENTITY() AS IDENTITY_COLUMN_NAME"&lt;/SPAN&gt;; 

    &lt;SPAN class=rem&gt;/* Execute the statement with the specified parameter values. */&lt;/SPAN&gt;
    $stmt1 = sqlsrv_query( $conn, $insertSQL, array($message, $fromuser));
    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt;( $stmt1 === &lt;SPAN class=kwrd&gt;false&lt;/SPAN&gt; )
    {
        echo &lt;SPAN class=str&gt;"Could not retrieve last inserted row ID.&amp;lt;/br&amp;gt;"&lt;/SPAN&gt;;
        die( print_r( sqlsrv_errors(), &lt;SPAN class=kwrd&gt;true&lt;/SPAN&gt;));
    } 

    echo &lt;SPAN class=str&gt;"The last inserted row ID is "&lt;/SPAN&gt;.lastInsertId($stmt1); 

?&amp;gt;&lt;/PRE&gt;
&lt;P&gt;The magic happens in the addition of &lt;STRONG&gt;$insertSQL .= &lt;SPAN class=str&gt;"; SELECT SCOPE_IDENTITY() AS IDENTITY_COLUMN_NAME"&lt;/SPAN&gt;;&lt;/STRONG&gt; appended to the INSERT query.&lt;/P&gt;
&lt;P&gt;Also note the use of a parameterized query. To reduce the risk of SQL injection nastiness, this nifty query does all the heavy lifting.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8961181" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/sqlserver/default.aspx">sqlserver</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/php/default.aspx">php</category></item><item><title>SQL Server Driver PHP commands compared with MySQL PHP commands</title><link>http://blogs.msdn.com/nickhodge/archive/2008/09/22/sql-server-driver-php-commands-compared-with-mysql-php-commands.aspx</link><pubDate>Mon, 22 Sep 2008 09:20:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8960904</guid><dc:creator>nhodge</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/8960904.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=8960904</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=8960904</wfw:comment><description>&lt;p&gt;Over the years I have used the inbuilt PHP drivers for MySQL. The best mechanism for mapping the two methods is a simple table laying out a comparison between the two systems.&lt;/p&gt;  &lt;p&gt;Note this is not a SQLServer vs. MySQL argument, just for information and reference. &lt;/p&gt;  &lt;p&gt;As the SQLServer drivers change, I will update this page.&lt;/p&gt;  &lt;p&gt;Note:&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="665"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="199"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296165(SQL.90).aspx"&gt;sqlsrv_client_info(&amp;#160; )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="464"&gt;DriverDllName: SQLNCLI.DLL DriverODBCVer: 03.52 DriverVer: 09.00.3042 ExtensionVer: 1.0.1015.0&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="667"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="199"&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a target="_blank" href="http://go.microsoft.com/fwlink/?LinkId=123470"&gt;&lt;strong&gt;SQLServer Driver for PHP&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;&lt;a target="_blank" href="http://www.php.net/manual/en/book.mysql.php"&gt;&lt;strong&gt;MySQL Functions&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Begins a transaction&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296151(SQL.90).aspx"&gt;sqlsrv_begin_transaction( resource $conn )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;START TRANSACTION, BEGIN, COMMIT, ROLLBACK can be executed as statements in mysql_query&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Cancels a statement; discards any pending results for the statement&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296179(SQL.90).aspx"&gt;sqlsrv_cancel( resource $stmt )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Provides information about the client&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296165(SQL.90).aspx"&gt;sqlsrv_client_info( resource $conn )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;&lt;b&gt;&lt;a href="http://www.php.net/manual/en/function.mysql-get-client-info.php"&gt;mysql_get_client_info ( void )&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Closes a connection. Frees all resources associated with the connection&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296175(SQL.90).aspx"&gt;sqlsrv_close( resource $conn )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;&lt;a target="_blank" href="http://www.php.net/manual/en/function.mysql-close.php"&gt;mysql_close ([ resource $link_identifier ] )&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Commits a transaction&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296194(SQL.90).aspx"&gt;sqlsrv_commit( resource $conn )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;START TRANSACTION, BEGIN, COMMIT, ROLLBACK can be executed as statements in mysql_query&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Changes error handling and logging configurations&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc644931(SQL.90).aspx"&gt;sqlsrv_configure( string $setting, int $value )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Creates and opens a connection&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296161(SQL.90).aspx"&gt;sqlsrv_connect( string $serverName [, array $connectionInfo )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;&lt;a target="_blank" href="http://www.php.net/manual/en/function.mysql-connect.php"&gt;mysql_connect ([ string $server [, string $username [, string $password [, bool $new_link [, int $client_flags ]]]]] )&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Returns error and/or warning information about the last operation&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296200(SQL.90).aspx"&gt;sqlsrv_errors( [int $errosAndOrWarnings] )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;&lt;a href="http://www.php.net/manual/en/function.mysql-errno.php"&gt;mysql_errno ([ resource $link_identifier ] )&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;a href="http://www.php.net/manual/en/function.mysql-error.php"&gt;mysql_error ([ resource $link_identifier ] )&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Executes a prepared statement with &lt;strong&gt;sqlsrv_prepare&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296162(SQL.90).aspx"&gt;sqlsrv_execute( resource $stmt )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Makes the next row of data available for reading&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296187(SQL.90).aspx"&gt;sqlsrv_fetch( resource $stmt )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Retrieves the next row of data as a numerically indexed array, an associative array, or both&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296174(SQL.90).aspx"&gt;sqlsrv_fetch_array( resource $stmt [, int $fetchType] )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;&lt;a href="http://www.php.net/manual/en/function.mysql-fetch-array.php"&gt;mysql_fetch_array ( resource $result [, int $result_type ] )&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Retrieves the next row of data as an object&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc626308(SQL.90).aspx"&gt;sqlsrv_fetch_object( resource $stmt [, string $className] )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;&lt;a href="http://www.php.net/manual/en/function.mysql-fetch-object.php"&gt;mysql_fetch_object ( resource $result [, string $class_name [, array $params ]] )&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Returns field metadata&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296197(SQL.90).aspx"&gt;sqlsrv_field_metadata( resource $stmt )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;See          &lt;br /&gt;&lt;a href="http://www.php.net/manual/en/function.mysql-field-type.php"&gt;mysql_field_type ( resource $result , int $field_offset )&lt;/a&gt; specifically the Example and &lt;a href="http://www.php.net/manual/en/function.mysql-fetch-field.php"&gt;mysql_fetch_field ( resource $result [, int $field_offset ] )&lt;/a&gt;           &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Closes a statement. Frees all resources associated with the statement&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296164(SQL.90).aspx"&gt;sqlsrv_free_stmt( resource $stmt )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;&lt;a href="http://www.php.net/function.mysql-free-result.php"&gt;mysql_free_result ( resource $result )&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Returns the value of the specified configuration setting&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc644933(SQL.90).aspx"&gt;sqlsrv_get_config( string $setting )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;&lt;a href="http://www.php.net/manual/en/function.mysql-get-client-info.php"&gt;mysql_get_client_info ( void )&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;         &lt;p&gt;Retrieves a field in the current row by index. The PHP return type can be specified&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296207(SQL.90).aspx"&gt;sqlsrv_get_field( resource $stmt, int $fieldIndex [, int $getAsType] )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;similar to &lt;a href="http://www.php.net/manual/en/function.mysql-result.php"&gt;mysql_result ( resource $result , int $row [, mixed $field ] )&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Makes the next result available for processing&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296167(SQL.90).aspx"&gt;sqlsrv_next_result( resource $stmt )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Retrieves the number of fields in an active result set&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc626301(SQL.90).aspx"&gt;sqlsrv_num_fields( resource $stmt )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;&lt;a href="http://www.php.net/manual/en/function.mysql-num-fields.php"&gt;mysql_num_fields ( resource $result )&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Prepares a Transact-SQL query without executing it. Implicitly binds parameters, executed with &lt;strong&gt;sqlsrv_execute&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296181(SQL.90).aspx"&gt;sqlsrv_prepare( resource $conn, string $tsql[ ,array $params[, array $options]] )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Prepares and executes a Transact-SQL query.&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296184(SQL.90).aspx"&gt;sqlsrv_query( resource $conn, string $tsql[ , array $params[, array $options]] )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;&lt;a href="http://www.php.net/manual/en/function.mysql-query.php"&gt;mysql_query ( string $query [, resource $link_identifier ] )&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Rolls back a transaction.&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296176(SQL.90).aspx"&gt;sqlsrv_rollback( resource $conn )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;START TRANSACTION, BEGIN, COMMIT, ROLLBACK can be executed as statements in &lt;strong&gt;mysql_query&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Returns the number of modified rows.&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296178(SQL.90).aspx"&gt;sqlsrv_rows_affected( resource $stmt )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;&lt;a target="_blank" href="http://www.php.net/manual/en/function.mysql-affected-rows.php"&gt;mysql_affected_rows ([ resource $link_identifier ] )&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Sends up to eight kilobytes (8 KB) of data to the server with each call to the function.&lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296180(SQL.90).aspx"&gt;sqlsrv_send_stream_data( resource $stmt )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;         &lt;p&gt;Provides information about the server.&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="225"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc296204(SQL.90).aspx"&gt;sqlsrv_server_info( resource $conn )&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;&lt;a href="http://www.php.net/manual/en/function.mysql-get-server-info.php"&gt;mysql_get_server_info ([ resource $link_identifier ] )&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8960904" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/sqlserver/default.aspx">sqlserver</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/php/default.aspx">php</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/mysql/default.aspx">mysql</category></item><item><title>MySQL to SQLServer 2008 Express [redux]</title><link>http://blogs.msdn.com/nickhodge/archive/2008/09/01/mysql-to-sqlserver-2008-express-redux.aspx</link><pubDate>Mon, 01 Sep 2008 08:58:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8915584</guid><dc:creator>nhodge</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/8915584.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=8915584</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=8915584</wfw:comment><description>&lt;p&gt;Last week, the &lt;a target="_blank" href="http://blogs.msdn.com/sqlexpress/archive/2008/08/07/what-s-up-with-sql-server-2008-express-editions.aspx"&gt;SQLServer 2008 Express&lt;/a&gt; team released a download with the &lt;a target="_blank" href="http://technet.microsoft.com/en-us/library/ms174173.aspx"&gt;SQL Server Management Studio&lt;/a&gt;. A few weeks ago, &lt;a target="_blank" href="http://blogs.msdn.com/nickhodge/archive/2008/08/18/mysql-to-sqlserver-express-2008.aspx"&gt;I blogged how to export/import the .sql from one system to another&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Having installed the Management Studio, I noticed that I could import data into my new SQLServer database:&lt;/p&gt;  &lt;p&gt;&lt;a title="import" href="http://www.flickr.com/photos/37473564@N00/2816885384/"&gt;&lt;img border="0" alt="import" src="http://static.flickr.com/3078/2816885384_f24d4d61c2.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Having previously &lt;a target="_blank" href="http://dev.mysql.com/downloads/connector/net/5.2.html"&gt;installed the MySQL .Net connector&lt;/a&gt;, all I had to do was fill in the blanks. Server (with remote access enabled), database, username and password.&lt;/p&gt;  &lt;p&gt;&lt;a title="sqlserver-mgmt-import-1" href="http://www.flickr.com/photos/37473564@N00/2794763989/"&gt;&lt;img border="0" alt="sqlserver-mgmt-import-1" src="http://static.flickr.com/3197/2794763989_2f7764f7a2.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The tricky part is mapping MySQL datatypes to SQLServer datatypes, and importing. Note that with a non-Express version of SQL Server Management Studio, you can save the schemas and automate the import.&lt;/p&gt;  &lt;p&gt;&lt;a title="sqlserver-mgmt-import" href="http://www.flickr.com/photos/37473564@N00/2794763857/"&gt;&lt;img border="0" alt="sqlserver-mgmt-import" src="http://static.flickr.com/3102/2794763857_aa590d1ce1.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Download it and give it a whirl!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8915584" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/sqlserver/default.aspx">sqlserver</category></item><item><title>MySQL to SQLServer [Express] 2008</title><link>http://blogs.msdn.com/nickhodge/archive/2008/08/18/mysql-to-sqlserver-express-2008.aspx</link><pubDate>Mon, 18 Aug 2008 08:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8875929</guid><dc:creator>nhodge</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/8875929.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=8875929</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=8875929</wfw:comment><description>&lt;P&gt;Being a historical &lt;A href="http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29" target=_blank mce_href="http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29"&gt;LAMP&lt;/A&gt; guy, the first problem is &lt;EM&gt;how do I get my data across?&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;The release of free &lt;A href="http://www.microsoft.com/sqlserver/2008/en/us/express.aspx" target=_blank mce_href="http://www.microsoft.com/sqlserver/2008/en/us/express.aspx"&gt;SQLServer Express 2008&lt;/A&gt;, with the integration with Vista x64, &lt;A href="http://www.codeplex.com/SQL2K5PHP" target=_blank mce_href="http://www.codeplex.com/SQL2K5PHP"&gt;PHP&lt;/A&gt; and Visual Studio is an attractive proposition. But: schema and data first.&lt;/P&gt;
&lt;H4&gt;1. Using &lt;A href="http://sourceforge.net/projects/phpmyadmin/" target=_blank mce_href="http://sourceforge.net/projects/phpmyadmin/"&gt;PHPMyAdmin&lt;/A&gt;, I exported the tables as SQL; and specifically ANSI SQL:&lt;/H4&gt;
&lt;P&gt;&lt;A title="mysql phpmyadmin export sql" href="http://www.flickr.com/photos/37473564@N00/2773883322/" mce_href="http://www.flickr.com/photos/37473564@N00/2773883322/"&gt;&lt;IMG alt="mysql phpmyadmin export sql" src="http://static.flickr.com/3077/2773883322_8feb0b07b6.jpg" border=0 mce_src="http://static.flickr.com/3077/2773883322_8feb0b07b6.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;2. Edit the SQL&lt;/H4&gt;
&lt;P&gt;This is the ugly part. There were four main changes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Change syntax of the CREATE TABLE to place tables inside the correct namespace (eg: &lt;STRONG&gt;database&lt;/STRONG&gt;.dbo.&lt;STRONG&gt;table&lt;/STRONG&gt;) and a (ouch) find and replace on INSERTS &lt;/LI&gt;
&lt;LI&gt;Changing the syntax of the PRIMARY KEY &lt;/LI&gt;
&lt;LI&gt;Adding SQLServer Transact SQL (T-SQL) 'go' statements after the table creation and insertion blocks &lt;/LI&gt;
&lt;LI&gt;Changing the column types to match SQLServer types &lt;/LI&gt;&lt;/UL&gt;
&lt;H4&gt;3. SQLCMD&lt;/H4&gt;
&lt;P&gt;SQLCMD is the command line interface to your SQLServer instance.&lt;/P&gt;
&lt;P&gt;Simply typing &lt;STRONG&gt;SQLCMD –S MAJORSTAR\SQLExpress -E -i export.sql&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Where SQLExpress is the instance on a machine called MAJORSTAR, -E to login with my current credentials and -i to run the export.sql file.&lt;/P&gt;
&lt;P&gt;With further research, the -d (to set db name) and other like tweaking, the amount of editing as completed in step 2 could have been avoided.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In a few short steps, I had imported my schema and data into SQLServer Express 2008&lt;/P&gt;
&lt;P&gt;For more indepth articles, &lt;A href="http://www.microsoft.com/sql/techinfo/whitepapers/MigrateMySQL.mspx" mce_href="http://www.microsoft.com/sql/techinfo/whitepapers/MigrateMySQL.mspx"&gt;The Guide to Migrating from MySQL to SQL Server 2005&lt;/A&gt; looks informative&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8875929" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/sqlserver/default.aspx">sqlserver</category></item></channel></rss>