Friday, January 7, 2011

Fix Windows Media Player Cannot Stream and Play File Because Specified Protocol Is Not Supported

When user tries to stream and listen or watch audio or video from Microsoft Windows Media Services, or clicks on a hyper-link starts with mms:// syntax, Windows Media Player (WMP) may give the following error message:
Windows Media Player cannot play the file because the specified protocol is not supported. If you typed a URL in the Open URL dialog box, try using a different transport protocol (for example, “http:” or “rtsp:”).

In addition, user may also encounter the following symptoms:
  • When you click the Network tab of the Windows Media Player Options menu, nothing happens.
  • On the Windows Media Player Network tab, the “Streaming proxy settings” protocol listing is empty.
The error does not happen or occur when user plays back the media or content that is stored on a local hard disk drive or connected external mass storage device via USB or FireWire.
The problem is caused by either the wmnetmgr.dll file (located in C:\Windows\System32) is unregistered, the wmsdkns.xml file is corrupted or has incorrect permissions.
To fix the issue, use one of the following resolution methods:
Method 1
Register the wmnetmgr.dll file by using an account that is in the Administrators group. At an elevated command prompt, run the following command.:
regsvr32 wmnetmgr.dll
Method 2
Make sure that (and add in the right if necessary) the user account that is using Windows Media Player has Modify permissions for the wmsdkns.xml file, using the file properties Security tab.
Note: In Windows Vista, the file is located in the C:\Users\Username\AppData\Local\Microsoft\Windows Media\11.0 folder. In Windows XP, the file is located in the C:\Documents and Settings\UserName\Local Settings\Application Data\Microsoft\Windows Media\11.0 folder.
Method 3
Delete the wmsdkns.xml file. Windows Media Player will re-create the wmsdkns.xml file upon deletion.
Note: In Windows Vista, the file is located in the C:\Users\Username\AppData\Local\Microsoft\Windows Media\11.0 folder. In Windows XP, the file is located in the C:\Documents and Settings\UserName\Local Settings\Application Data\Microsoft\Windows Media\11.0 folder.
Another possible reason for the error because the file type association for URL:MMS protocol has not be assigned properly. Here’s the fix for Windows Media Player does not handle URL:MMS stream protocol.

What does the @ symbol do in PHP?

QUESTION
========

Can someone explain thise line of code to me, I cannot find a refernece in
the manual to using the @ symbol.

$this->Record = @pg_fetch_array($this->Query_ID, $this->Row++);


ANSWER
======

Adding the "@" symbol in front of any function call will suppress any
PHP-generated error messages from that function call. In general, this is
used to prevent users from seeing nasty error messages when you have
coded something incorrectly.

That means that if that function generates a non-fatal error (warning) it
will not display the warning message in your HTML, rather just return false
and let the program cope with it.


an @ symbol in front of the mysql_query function. Many functions, including mysql_query, automatically display ugly error messages when they fail. Placing the @ symbol (also known as the error suppression operator) in front of the function name tells the function to fail silently, and allows us to display our own, friendlier error message.

Source(s):

http://www.sitepoint.com/article/publishing-mysql-data-web
  • 4 years ago

php mysql data access class

http://scripts.ringsworld.com/quote-display/trotator/ez-sql.php.html


  
// ==================================================================
  //  Author: Justin Vincent (justin  visunet  ie)
  //  Web:  http://php.justinvincent.com
  //  Name:   ezSQL
  //  Desc:   Class to make it very easy to deal with mySQL database connections.
  //
  // !! IMPORTANT !!
  //
  //  Please send me a mail telling me what you think of ezSQL
  //  and what your using it for!! Cheers. [ justin  visunet  ie ]
  //
  // ==================================================================

// user database settings
  
define("EZSQL_DB_USER",  "");
  
define("EZSQL_DB_PASSWORD",  "");
  
define("EZSQL_DB_NAME",  "test");
  
define("EZSQL_DB_HOST",  ""); // end of user database settings

  // ==================================================================
  //  ezSQL Constants
  
define("EZSQL_VERSION", "1.18");
  
define("OBJECT", "OBJECT", true);
  
define("ARRAY_A", "ARRAY_A", true);
  
define("ARRAY_N", "ARRAY_N", true);
  
  
// ==================================================================
  //  The Main Class

  
class stp_db {

    var 
$debug_called;
    var 
$vardump_called;
    var 
$show_errors true;

    
// ==================================================================
    //  DB Constructor - connects to the server and selects a database

    
function stp_db($dbuser,  $dbpassword,  $dbname,  $dbhost)
    {

      
$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);

      if ( ! 
$this->dbh )
      {
        
$this->print_error("
    Error establishing a database connection!
  1. Are you sure you have the correct user/password?
  2. Are you sure that you have typed the correct hostname?
  3. Are you sure that the database server is running?
"
);
      }


      
$this->select($dbname);

    }

    
// ==================================================================
    //  Select a DB (if another one needs to be selected)

    
function select($db)
    {
      if ( !@
mysql_select_db($db, $this->dbh))
      {
        
$this->print_error("
    Error selecting database $db!
  1. Are you sure it exists?
  2. Are you sure there is a valid database connection?
"
);
      }
    }

    
// ====================================================================
    //  Format a string correctly for safe insert under all PHP conditions
    
    
function escape($str)
    {
      return 
mysql_escape_string(stripslashes($str));       
    }

    
// ==================================================================
    //  Print SQL/DB error.

    
function print_error($str "")
    {
      
      
// All erros go to the global error array $EZSQL_ERROR..
      
global $EZSQL_ERROR;

      
// If no special error string then use mysql default..
      
if ( !$str $str mysql_error();
      
      
// Log this error to the global array..
      
$EZSQL_ERROR[] = array 
              (
                
"query" => $this->last_query,
                
"error_str"  => $str
              
);

      
// Is error output turned on or not..
      
if ( $this->show_errors )
      {
        
// If there is an error then take note of it
        
print "
";
        print 
"SQL/DB Error -- ";
        print 
"[$str]";
        print 
"
"
;
        
/*
        global $PHP_SELF;
        $sqllog = fopen('sqllog',  'a');
        fwrite($sqllog,  "\n\n----\n");
        fwrite($sqllog,  $this->last_query."\n");
        fwrite($sqllog,  $PHP_SELF."\n");
        fclose($sqllog);
        */
      
}
      else
      {
        return 
false
      }

    }

    
// ==================================================================
    //  Turn error handling on or off..

    
function show_errors()
    {
      
$this->show_errors true;
    }
    
    function 
hide_errors()
    {
      
$this->show_errors false;
    }

    
// ==================================================================
    //  Kill cached query results

    
function flush()
    {

      
// Get rid of these
      
$this->last_result null;
      
$this->col_info null;
      
$this->last_query null;

    }

    
// ==================================================================
    //  Basic Query - see docs for more detail

    
function query($query)
    {

      
// Flush cached values..
      
$this->flush();

      
// Log how the function was called
      
$this->func_call "\$db->query(\"$query\")";

      
// Keep track of the last query for debug..
      
$this->last_query $query;

      
// Perform the query via std mysql_query function..
      
$this->result mysql_query($query, $this->dbh);

      
// If there was an insert,  delete or update see how many rows were affected
      // (Also,  If there there was an insert take note of the insert_id
      
$query_type = array("insert", "delete", "update");

      
// loop through the above array
      
foreach ( $query_type as $word )
      {
        
// This is true if the query starts with insert,  delete or update
        
if ( preg_match("/$word /i", $query) )
        {
          
$this->rows_affected mysql_affected_rows();
          
          
// This gets the insert ID
          
if ( $word == "insert" )
          {
            
$this->insert_id mysql_insert_id($this->dbh);
          }
          
          
$this->result false;
        }
        
      }
   
      if ( 
mysql_error() )
      {

        
// If there is an error then take note of it..
        
$this->print_error();

      }
      else
      {

        
// In other words if this was a select statement..
        
if ( $this->result )
        {

          
// =======================================================
          // Take note of column info

          
$i=0;
          while (
$i < @mysql_num_fields($this->result))
          {
            
$this->col_info[$i] = @mysql_fetch_field($this->result);
            
$i++;
          }

          
// =======================================================
          // Store Query Results

          
$i=0;
          while ( 
$row = @mysql_fetch_object($this->result) )
          {

            
// Store relults as an objects within main array
            
$this->last_result[$i] = $row;

            
$i++;
          }

          
// Log number of rows the query returned
          
$this->num_rows $i;

          @
mysql_free_result($this->result);


          
// If there were results then return true for $db->query
          
if ( $i )
          {
            return 
true;
          }
          else
          {
            return 
false;
          }

        }
        else
        {
          
// Update insert etc. was good..
          
return true;
        }
      }
    }

    
// ==================================================================
    //  Get one variable from the DB - see docs for more detail

    
function get_var($query=null, $x=0, $y=0)
    {

      
// Log how the function was called
      
$this->func_call "\$db->get_var(\"$query\", $x, $y)";

      
// If there is a query then perform it if not then use cached results..
      
if ( $query )
      {
        
$this->query($query);
      }

      
// Extract var out of cached results based x, y vals
      
if ( $this->last_result[$y] )
      {
        
$values array_values(get_object_vars($this->last_result[$y]));
      }

      
// If there is a value return it else return null
      
return (isset($values[$x]) && $values[$x]!=='')?$values[$x]:null;
    }

    
// ==================================================================
    //  Get one row from the DB - see docs for more detail

    
function get_row($query=null, $output=OBJECT, $y=0)
    {

      
// Log how the function was called
      
$this->func_call "\$db->get_row(\"$query\", $output, $y)";

      
// If there is a query then perform it if not then use cached results..
      
if ( $query )
      {
        
$this->query($query);
      }

      
// If the output is an object then return object using the row offset..
      
if ( $output == OBJECT )
      {
        return 
$this->last_result[$y]?$this->last_result[$y]:null;
      }
      
// If the output is an associative array then return row as such..
      
elseif ( $output == ARRAY_A )
      {
        return 
$this->last_result[$y]?get_object_vars($this->last_result[$y]):null;
      }
      
// If the output is an numerical array then return row as such..
      
elseif ( $output == ARRAY_N )
      {
        return 
$this->last_result[$y]?array_values(get_object_vars($this->last_result[$y])):null;
      }
      
// If invalid output type was specified..
      
else
      {
        
$this->print_error(" \$db->get_row(string query,  output type,  int offset) -- Output type must be one of: OBJECT,  ARRAY_A,  ARRAY_N");
      }

    }

    
// ==================================================================
    //  Function to get 1 column from the cached result set based in X index
    // se docs for usage and info

    
function get_col($query=null, $x=0)
    {

      
// If there is a query then perform it if not then use cached results..
      
if ( $query )
      {
        
$this->query($query);
      }

      
// Extract the column values
      
for ( $i=0$i count($this->last_result); $i++ )
      {
        
$new_array[$i] = $this->get_var(null, $x, $i);
      }

      return 
$new_array;
    }

    
// ==================================================================
    // Return the the query as a result set - see docs for more details

    
function get_results($query=null,  $output OBJECT)
    {

      
// Log how the function was called
      
$this->func_call "\$db->get_results(\"$query\",  $output)";

      
// If there is a query then perform it if not then use cached results..
      
if ( $query )
      {
        
$this->query($query);
      }

      
// Send back array of objects. Each row is an object
      
if ( $output == OBJECT )
      {
        return 
$this->last_result;
      }
      elseif ( 
$output == ARRAY_A || $output == ARRAY_N )
      {
        if ( 
$this->last_result )
        {
          
$i=0;
          foreach( 
$this->last_result as $row )
          {

            
$new_array[$i] = get_object_vars($row);

            if ( 
$output == ARRAY_N )
            {
              
$new_array[$i] = array_values($new_array[$i]);
            }

            
$i++;
          }

          return 
$new_array;
        }
        else
        {
          return 
null;
        }
      }
    }


    
// ==================================================================
    // Function to get column meta data info pertaining to the last query
    // see docs for more info and usage

    
function get_col_info($info_type="name", $col_offset=-1)
    {

      if ( 
$this->col_info )
      {
        if ( 
$col_offset == -)
        {
          
$i=0;
          foreach(
$this->col_info as $col )
          {
            
$new_array[$i] = $col->{$info_type};
            
$i++;
          }
          return 
$new_array;
        }
        else
        {
          return 
$this->col_info[$col_offset]->{$info_type};
        }

      }

    }


    
// ==================================================================
    // Dumps the contents of any input variable to screen in a nicely
    // formatted and easy to understand way - any type: Object,  Var or Array

    
function vardump($mixed)
    {

      echo 
"
";
      echo 
"
";



      if ( ! $this->vardump_called )

      {

        echo "ezSQL (v".EZSQL_VERSION.") Variable Dump..\n\n";

      }



      $var_type gettype ($mixed);

      print_r(($mixed?$mixed:"No Value / False"));

      echo "\n\nType: " ucfirst($var_type) . "\n";

      echo "Last Query: ".($this->last_query?$this->last_query:"NULL")."\n";

      echo "Last Function Call: " . ($this->func_call?$this->func_call:"None")."\n";

      echo "Last Rows Returned: ".count($this->last_result)."\n";

      echo "
If ezSQL has helped you why not make a donation!?"
;
      echo 
"\n";

      
$this->vardump_called true;

    }

    
// Alias for the above function
    
function dumpvar($mixed)
    {
      
$this->vardump($mixed);
    }

    
// ==================================================================
    // Displays the last query string that was sent to the database & a
    // table listing results (if there were any).
    // (abstracted into a seperate file to save server overhead).

    
function debug()
    {

      echo 
"
";

      
// Only show ezSQL credits once..
      
if ( ! $this->debug_called )
      {
        echo 
"ezSQL (v".EZSQL_VERSION.") Debug..\n";
      }
      echo 
"Query -- ";
      echo 
"[$this->last_query]";

        echo 
"Query Result..";
        echo 
"
";

      if ( 
$this->col_info )
      {

        
// =====================================================
        // Results top rows

        
echo "";
        echo 
"(row)";


        for ( 
$i=0$i count($this->col_info); $i++ )
        {
          echo 
"{$this->col_info[$i]->type} {$this->col_info[$i]->max_length}
{$this->col_info[$i]->name}";
        }

        echo 
"";

        
// ======================================================
        // print main results

      
if ( $this->last_result )
      {

        
$i=0;
        foreach ( 
$this->get_results(null, ARRAY_N) as $one_row )
        {
          
$i++;
          echo 
"$i";

          foreach ( 
$one_row as $item )
          {
            echo 
"$item";
          }

          echo 
"";
        }

      } 
// if last result
      
else
      {
        echo 
".(count($this->col_info)+1).">No Results";
      }

      echo 
"";

      } 
// if col_info
      
else
      {
        echo 
"No Results";
      }

      echo 
"
If ezSQL has helped you why not make a donation!?"
;


      
$this->debug_called true;
    }


  function 
get_cache($query '',  $refresh_rate 600) {
    
$fname md5(strtolower($query));
    
$filename CACHE_PATH '/' $fname;

    global 
$cache_log;

    if (
file_exists($filename)) {
      
$cache_timestamp filemtime($filename);
      
$timediff time() - $cache_timestamp;
    } else {
      
$no_file 1;
    }

    if (
$no_file || $query && ($timediff $refresh_rate)) {
      
$results_array $this->get_results($query);

      if (!
mysql_error()) {
        
$array_s serialize($results_array);
        
$file fopen($filename, 'w');
        
fwrite($file,  $array_s);
        
fclose($file);
      }

      
$cache_log[] = "$fname
"
.htmlspecialchars($query)."";

      return 
$results_array;
    } else {
      
$flen filesize($filename);
      
$file fopen($filename,  'r');
      
$results_array fread($file,  $flen);
      
fclose($file);

      
$cache_log[] = "$fname
"
.htmlspecialchars($query)."";
      
      return 
unserialize($results_array);
    }
  }
}
$db = new stp_db(EZSQL_DB_USER,  EZSQL_DB_PASSWORD,  EZSQL_DB_NAME,  EZSQL_DB_HOST);
?>