<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ben Jao Ming &#187; PHP</title>
	<atom:link href="http://overtag.dk/wordpress/category/computers/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://overtag.dk/wordpress</link>
	<description>101% objective... always</description>
	<lastBuildDate>Thu, 02 Feb 2012 12:29:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Re-using your database connection in PHP</title>
		<link>http://overtag.dk/wordpress/2006/04/re-using-your-database-connection-in-php/</link>
		<comments>http://overtag.dk/wordpress/2006/04/re-using-your-database-connection-in-php/#comments</comments>
		<pubDate>Sun, 16 Apr 2006 02:56:52 +0000</pubDate>
		<dc:creator>benjamin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://overtag.dk/wordpress/?p=4</guid>
		<description><![CDATA[Often I&#8217;ve wondered what&#8217;d be the best practice when connecting to MySQL with PHP. Many people use some function and possibly open and close their database connection multiple times. Well, I&#8217;ve used global variables and such to keep track of &#8230; <a href="http://overtag.dk/wordpress/2006/04/re-using-your-database-connection-in-php/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Often I&#8217;ve wondered what&#8217;d be the best practice when connecting to MySQL with PHP. Many people use some function and possibly open and close their database connection multiple times. Well, I&#8217;ve used global variables and such to keep track of the connection, but often global variables do not behave well in include files. Anyways, to get your code structured even better, you&#8217;d probably like everything to be in a class.</p>
<p><strong>Solution:</strong> In PHP 5 we have <a href="http://dk.php.net/manual/en/language.oop5.static.php">static variables</a>. So you simply use a static variable for your connection and make sure it isn&#8217;t opened more than once. PHP will take care of closing it again. In that way you can always by accident create too many instances of your database class  &#8211; which you&#8217;re very likely to have since many components are gonna want database access independent of each other.</p>
<p>By the way, in the example the example I also use the very usable <a href="http://dk.php.net/manual/en/language.oop5.autoload.php">__autoload()</a> function.</p>
<p>In short, here&#8217;s the code:</p>
<p><strong>Some file:</strong></p>
<p><code style="display: block"><font color="#000000"><br />
<font color="#0000bb" /></font></code></p>
<p><font color="#000000"><font color="#000000"> </font><font color="#000000"><font color="#000000"><font color="#000000"><font color="#0000bb">  </font><font color="#007700">require_once(</font><font color="#dd0000">&#8216;../lib/autoload.php&#8217;</font><font color="#007700">);<br />
</font><font color="#0000bb">$my_conn </font><font color="#007700">= new </font><font color="#0000bb">MyDB</font><font color="#007700">();<br />
</font><font color="#0000bb">$my_conn </font><font color="#007700">= new </font><font color="#0000bb">MyDB</font><font color="#007700">();</font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"> </font><font color="#000000"><font color="#000000"><font color="#000000"><font color="#0000bb">?></font><br />
</font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><strong>mydb.class.php:</strong></font></font></font></p>
<p><font color="#000000"><font color="#000000"> </font><code><font color="#000000"><font color="#000000"><font color="#000000"><br />
<font color="#0000bb" /></font></font></font></code></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"> </font><font color="#000000"><font color="#000000"><font color="#000000"><font color="#0000bb">    </font><font color="#ff8000">/* Default Database connection parms */</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#0000bb">$db_host </font><font color="#007700">= </font><font color="#dd0000">&#8216;localhost&#8217;</font><font color="#007700">;<br />
</font><font color="#0000bb">$db_user </font><font color="#007700">= </font><font color="#dd0000">&#8216;xxx&#8217;</font><font color="#007700">;</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"> </font><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">    </font><font color="#0000bb">$db_pass </font><font color="#007700">= </font><font color="#dd0000">&#8216;xxx&#8217;</font><font color="#007700">;<br />
</font><font color="#0000bb">$db_name </font><font color="#007700">= </font><font color="#dd0000">&#8216;xxx&#8217;</font><font color="#007700">;</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">class </font><font color="#0000bb">MyDB </font><font color="#007700">{</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">static </font><font color="#0000bb">$connection</font><font color="#007700">;<br />
</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"> </font><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">    function </font><font color="#0000bb">__construct </font><font color="#007700">( </font><font color="#0000bb">$host</font><font color="#007700">=</font><font color="#0000bb">NULL</font><font color="#007700">, </font><font color="#0000bb">$user</font><font color="#007700">=</font><font color="#0000bb">NULL</font><font color="#007700">, </font><font color="#0000bb">$pass</font><font color="#007700">=</font><font color="#0000bb">NULL</font><font color="#007700">, </font><font color="#0000bb">$name</font><font color="#007700">=</font><font color="#0000bb">NULL </font><font color="#007700">) {</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"> </font><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">            if ( !isset(</font><font color="#0000bb">self</font><font color="#007700">::</font><font color="#0000bb">$connection</font><font color="#007700">) ) {</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">if ( </font><font color="#0000bb">$host </font><font color="#007700">== </font><font color="#0000bb">NULL </font><font color="#007700">) {</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"> </font><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">                    </font><font color="#0000bb">$host </font><font color="#007700">= </font><font color="#0000bb">$db_host</font><font color="#007700">;</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#0000bb">$user </font><font color="#007700">= </font><font color="#0000bb">$db_user</font><font color="#007700">;</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#0000bb">$pass </font><font color="#007700">= </font><font color="#0000bb">$db_pass</font><font color="#007700">;</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#0000bb">$name </font><font color="#007700">= </font><font color="#0000bb">$db_name</font><font color="#007700">;</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">}</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"> </font><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">                </font><font color="#0000bb">self</font><font color="#007700">::</font><font color="#0000bb">$connection </font><font color="#007700">= </font><font color="#0000bb">mysql_connect</font><font color="#007700">( </font><font color="#0000bb">$host</font><font color="#007700">, </font><font color="#0000bb">$user</font><font color="#007700">, </font><font color="#0000bb">$pass</font><font color="#007700">, </font><font color="#0000bb">$name </font><font color="#007700">);</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">if (!</font><font color="#0000bb">self</font><font color="#007700">::</font><font color="#0000bb">$connection</font><font color="#007700">)</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"> </font><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">                    </font><font color="#0000bb">$this</font><font color="#007700">-&gt;</font><font color="#0000bb">print_error </font><font color="#007700">(</font><font color="#dd0000">&#8216;Could not connect to database!&#8217;</font><font color="#007700">);</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">} else {</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">echo </font><font color="#dd0000">&#8220;Warning: Connection is already established!&lt;br /&gt;&#8221;</font><font color="#007700">;</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"> </font><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">      }</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">}</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#0000bb">public </font><font color="#007700">function </font><font color="#0000bb">print_error </font><font color="#007700">( </font><font color="#0000bb">$my_msg </font><font color="#007700">) {</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">echo </font><font color="#dd0000">&#8220;&lt;b&gt;Database error!&lt;/b&gt;&lt;br /&gt;$my_msg&lt;br /&gt;&#8221; </font><font color="#007700">. </font><font color="#0000bb">mysql_error</font><font color="#007700">();</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"> </font><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">    }</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#000000"><font color="#007700">}</font></font></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"> </font><font color="#000000"><font color="#000000"><font color="#000000"><font color="#0000bb">?></font><br />
</font><br />
</font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"> </font><font color="#000000"><font color="#000000">&#8230;will output:</font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"> </font><font color="#000000"><font color="#000000"><em>Warning: Connection is already established!</em></font></font></font></font></p>
<p><font color="#000000"><font color="#000000"><font color="#000000"> </font><font color="#000000"><font color="#000000">A quick note: PHP&#8217;s <em>mysql_connect()</em> already keeps track of connections to avoid opening the same connection multiple times. So why this approach? Well, suppose that you left it all up to PHP: Then you wouldn&#8217;t be in control anymore, and different pieces of code utilizing the same MySql functions would be impossible to keep track of. That&#8217;s the reason for static properties and methods &#8211; to make something shared across multiple instances.</font></font> </font></font></p>
]]></content:encoded>
			<wfw:commentRss>http://overtag.dk/wordpress/2006/04/re-using-your-database-connection-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

