<?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>Joey Rivera &#187; sp</title>
	<atom:link href="http://www.joeyrivera.com/tag/sp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.joeyrivera.com</link>
	<description>Blogging about PHP, Actionscript, MySQL, and other interests.</description>
	<lastBuildDate>Fri, 02 Dec 2011 03:55:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>SQLSTATE[HY000]: General error &#8211; using php/pdo mysql stored procedures (sp)</title>
		<link>http://www.joeyrivera.com/2009/sqlstatehy000-general-error-using-phppdo-mysql-stored-procedures-sp/</link>
		<comments>http://www.joeyrivera.com/2009/sqlstatehy000-general-error-using-phppdo-mysql-stored-procedures-sp/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 15:15:39 +0000</pubDate>
		<dc:creator>Joey</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[general error]]></category>
		<category><![CDATA[hy000]]></category>
		<category><![CDATA[pdo]]></category>
		<category><![CDATA[sp]]></category>
		<category><![CDATA[sqlstate]]></category>
		<category><![CDATA[stored procedures]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.joeyrivera.com/?p=414</guid>
		<description><![CDATA[I spent many hours last night trying to figure out why I was getting a fatal error: &#8217;SQLSTATE[HY000]: General error 0&#8242; in my code and finally figured it out but first my environment. I&#8217;m using Zend Server CE running php 5.3.0, zend framework 1.9.0 and mysql 5.1.32. I should have tested this bug without the zend [...]]]></description>
			<content:encoded><![CDATA[<p>I spent many hours last night trying to figure out why I was getting a fatal error: &#8217;SQLSTATE[HY000]: General error 0&#8242; in my code and finally figured it out but first my environment. I&#8217;m using Zend Server CE running php 5.3.0, zend framework 1.9.0 and mysql 5.1.32. I should have tested this bug without the zend framework to make sure it&#8217;s not specific to zf (I don&#8217;t think it is) but I&#8217;m feeling lazy so I&#8217;ll let someone else try it out.</p>
<p>My code works as follows. I have a php class that calls a stored procedure which will take in an id, return a record set (if found) and will also return 2 out variables. While it was returning a record set everything was working perfectly fine. When I tried passing an invalid id, nothing was being returned and my code would keep giving me the &#8216;SQLSTATE[HY000]: General error 0&#8242; (very helpful error indeed&#8230;).</p>
<p>The issue ended up being the way I had my stored procedure coded. I would first check to see if the id passed was valid, if so I would select the data else I would set my out vars to some value and do nothing else. For some reason, because I wasn&#8217;t returning a select, my code would blow up. In the mysql query browser, my stored procedure worked fine and my second select to get the out vars was working correctly. But php didn&#8217;t like it one bit. I tried forcing a select in my stored procedure in the invalid id section and then everything worked fine again. This sounds a bit confusing so here is the way I can replicate this.<span id="more-414"></span></p>
<p>Here is a sample stored procedure:</p>
<div class="dean_ch" style="white-space: wrap;">DELIMITER $$</p>
<p><span class="kw1">DROP PROCEDURE</span> IF <span class="kw1">EXISTS</span> `test` $$<br />
<span class="kw1">CREATE PROCEDURE</span> `test`<br />
<span class="br0">&#40;</span><br />
&nbsp; OUT counter <span class="kw2">INT</span><br />
<span class="br0">&#41;</span><br />
<span class="kw1">BEGIN</span><br />
&nbsp; <span class="kw1">SET</span> counter = <span class="nu0">5</span>;<br />
<span class="kw1">END</span> $$</p>
<p>DELIMITER ;</p></div>
<p>In mysql query browser this works just fine if I call test(@out); and then select @out I get 5. But in my php code this blows up when I run:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="re0">$query</span> = <span class="st0">&quot;CALL test(@out);&quot;</span>;<br />
<span class="re0">$data</span> = Zend_Registry::<span class="me2">get</span><span class="br0">&#40;</span><span class="st0">&#8216;db&#8217;</span><span class="br0">&#41;</span>-&gt;<span class="me1">fetchAll</span><span class="br0">&#40;</span><span class="re0">$query</span><span class="br0">&#41;</span>;</div>
<p>To fix this problem I just need to add a select statement to the stored procedure even if I don&#8217;t need that data. I add select &#8216;hi&#8217;; to the sp and then my code works:</p>
<div class="dean_ch" style="white-space: wrap;">DELIMITER $$</p>
<p><span class="kw1">DROP PROCEDURE</span> IF <span class="kw1">EXISTS</span> `test` $$<br />
<span class="kw1">CREATE PROCEDURE</span> `test`<br />
<span class="br0">&#40;</span><br />
&nbsp; OUT counter <span class="kw2">INT</span><br />
<span class="br0">&#41;</span><br />
<span class="kw1">BEGIN</span><br />
&nbsp; <span class="kw1">SELECT</span> <span class="st0">&#8216;hi&#8217;</span>;<br />
&nbsp; <span class="kw1">SET</span> counter = <span class="nu0">5</span>;<br />
<span class="kw1">END</span> $$</p>
<p>DELIMITER ;</p></div>
<p>The quick testing php code:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="re0">$query</span> = <span class="st0">&quot;CALL test(@out);&quot;</span>;<br />
<span class="re0">$data</span> = Zend_Registry::<span class="me2">get</span><span class="br0">&#40;</span><span class="st0">&#8216;db&#8217;</span><span class="br0">&#41;</span>-&gt;<span class="me1">fetchAll</span><span class="br0">&#40;</span><span class="re0">$query</span><span class="br0">&#41;</span>;<br />
<span class="re0">$data</span> = Zend_Registry::<span class="me2">get</span><span class="br0">&#40;</span><span class="st0">&#8216;db&#8217;</span><span class="br0">&#41;</span>-&gt;<span class="me1">fetchRow</span><span class="br0">&#40;</span><span class="st0">&#8216;select @out;&#8217;</span><span class="br0">&#41;</span>;<br />
<a href="http://www.php.net/print_r"><span class="kw3">print_r</span></a><span class="br0">&#40;</span><span class="re0">$data</span><span class="br0">&#41;</span>;</div>
<p>Instead of the general error now I get Array ( [@out] =&gt; 5 ) which is what was excepted. Hope this is helpful to you guys. Now I know I have to modify my stored procedures to always have a select even if it&#8217;s empty. What I don&#8217;t know if it&#8217;s specific to my environment or not which I may do more tests later to find out. If you try this and don&#8217;t get my same error please post so we have a better idea of what causing this issue or if you know why do share.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joeyrivera.com/2009/sqlstatehy000-general-error-using-phppdo-mysql-stored-procedures-sp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using MySQL Stored Procedure IN/OUT and Recordset w/ PHP</title>
		<link>http://www.joeyrivera.com/2009/using-mysql-stored-procedure-inout-and-recordset-w-php/</link>
		<comments>http://www.joeyrivera.com/2009/using-mysql-stored-procedure-inout-and-recordset-w-php/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 03:21:29 +0000</pubDate>
		<dc:creator>Joey</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[pdo]]></category>
		<category><![CDATA[sp]]></category>
		<category><![CDATA[stored procedures]]></category>

		<guid isPermaLink="false">http://www.joeyrivera.com/?p=395</guid>
		<description><![CDATA[Note: The code below will not work on all environments. I&#8217;m using php 5.2.6 with mysql driver 5.0.18. In a previous post: http://www.joeyrivera.com/2009/using-mysql-stored-procedures-with-php-mysqlmysqlipdo/ I explained how to use MySQL stored procedures with different db adapters such as mysql, mysqli, and pdo in PHP. In those examples, I demonstrated calling a sp with in/out variables and [...]]]></description>
			<content:encoded><![CDATA[<p>Note: The code below will not work on all environments. I&#8217;m using php 5.2.6 with mysql driver 5.0.18.</p>
<p>In a previous post:<br />
<a href="http://www.joeyrivera.com/2009/using-mysql-stored-procedures-with-php-mysqlmysqlipdo/">http://www.joeyrivera.com/2009/using-mysql-stored-procedures-with-php-mysqlmysqlipdo/</a></p>
<p>I explained how to use MySQL stored procedures with different db adapters such as mysql, mysqli, and pdo in PHP. In those examples, I demonstrated calling a sp with in/out variables and calling a stored procedure that returns a recordset. One of the comments I received was a person asking how to call a stored procedure that uses in/out parameters as well as returns a recordset. It&#8217;s not much different and here&#8217;s how.</p>
<p>The trick is to combine both methods in one. Here&#8217;s an example of what the stored procedure looks like:</p>
<div class="dean_ch" style="white-space: wrap;">DELIMITER $$<br />
<span class="kw1">DROP PROCEDURE</span> IF <span class="kw1">EXISTS</span> `test`.`get_users` $$<br />
<span class="kw1">CREATE PROCEDURE</span> `get_users`<span class="br0">&#40;</span><br />
<span class="kw5">IN</span> firstName <span class="kw2">VARCHAR</span><span class="br0">&#40;</span><span class="nu0">100</span><span class="br0">&#41;</span>,<br />
OUT totalUsers <span class="kw2">INT</span><br />
<span class="br0">&#41;</span><br />
<span class="kw1">BEGIN</span><br />
<span class="kw1">SELECT</span> COUNT<span class="br0">&#40;</span>*<span class="br0">&#41;</span><br />
<span class="kw1">INTO</span> totalUsers<br />
<span class="kw1">FROM</span> users<br />
<span class="kw1">WHERE</span> first_name = firstName;<br />
<span class="kw1">SELECT</span> *<br />
<span class="kw1">FROM</span> users<br />
<span class="kw1">WHERE</span> first_name = firstName;<br />
<span class="kw1">END</span> $$<br />
DELIMITER ;</div>
<p><span id="more-395"></span>Notice there are two statements in the body of this stored procedure. The first select count(*) statement counts the total number of people who&#8217;s first name is equal to the in variable firstName. Once it&#8217;s gets the count, it sets the out variable totalUsers to that value.</p>
<p>The next statement is a simple select. This will select all fields for users who&#8217;s first name is equal to the in variable firstName and return the recordset. So by calling this stored procedure and passing in two parameters (first name, total), a recordset will be returned and an out variable will be set &#8211; that can then be queried.</p>
<p>I&#8217;m using the same users table from my previous post on stored procedures. Click on the link above to access that post and copy the create statement. I&#8217;m using a bit more data on the users table this time for this example to work. Here&#8217;s the insert statement:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">INSERT</span> <span class="kw1">INTO</span> users<br />
<span class="kw1">VALUES</span> <span class="br0">&#40;</span><span class="kw3">NULL</span>, <span class="st0">&#8216;Joey&#8217;</span>, <span class="st0">&#8216;Rivera&#8217;</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="kw3">NULL</span>, <span class="st0">&#8216;John&#8217;</span>, <span class="st0">&#8216;Doe&#8217;</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="kw3">NULL</span>, <span class="st0">&#8216;Joey&#8217;</span>, <span class="st0">&#8216;Tester&#8217;</span><span class="br0">&#41;</span>,<br />
<span class="br0">&#40;</span><span class="kw3">NULL</span>, <span class="st0">&#8216;Joey&#8217;</span>, <span class="st0">&#8216;Test&#8217;</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="kw3">NULL</span>, <span class="st0">&#8216;Billy&#8217;</span>, <span class="st0">&#8216;Bob&#8217;</span><span class="br0">&#41;</span>;</div>
<p>The code is pretty simple, pretty much you want to do two queries. The first calls the stored procedure and passes in both variables. This first query will return a recordset (the second select statement in the body of the stored procedure. The next query will select totalUsers to get that variable and display it. Here&#8217;s the php code to do this in both mysql and pdo_mysql:</p>
<h4>MySQL</h4>
<div class="dean_ch" style="white-space: wrap;"><span class="re0">$mysql</span> = <a href="http://www.php.net/mysql_connect"><span class="kw3">mysql_connect</span></a><span class="br0">&#40;</span><span class="st0">&#8216;localhost&#8217;</span>, <span class="st0">&#8216;test&#8217;</span>, <span class="st0">&#8216;test&#8217;</span>, <span class="kw2">false</span>, <span class="nu0">65536</span><span class="br0">&#41;</span>;<br />
<a href="http://www.php.net/mysql_select_db"><span class="kw3">mysql_select_db</span></a><span class="br0">&#40;</span><span class="st0">&#8216;test&#8217;</span>, <span class="re0">$mysql</span><span class="br0">&#41;</span>;<br />
<span class="re0">$rs</span> = <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="st0">&quot;call get_users(&#8216;joey&#8217;, @total);&quot;</span><span class="br0">&#41;</span>;<br />
<span class="kw1">while</span><span class="br0">&#40;</span><span class="re0">$row</span> = <span class="br0">&#40;</span><a href="http://www.php.net/mysql_fetch_assoc"><span class="kw3">mysql_fetch_assoc</span></a><span class="br0">&#40;</span><span class="re0">$rs</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<a href="http://www.php.net/print_r"><span class="kw3">print_r</span></a><span class="br0">&#40;</span><span class="re0">$row</span><span class="br0">&#41;</span>;<br />
<a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;&lt;br /&gt;&#8217;</span>;<br />
<span class="br0">&#125;</span><br />
<span class="co1">// now get the @total var</span><br />
<span class="re0">$rs2</span> = <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="st0">&quot;select @total;&quot;</span><span class="br0">&#41;</span>;<br />
<span class="re0">$total</span> = <a href="http://www.php.net/mysql_fetch_assoc"><span class="kw3">mysql_fetch_assoc</span></a><span class="br0">&#40;</span><span class="re0">$rs2</span><span class="br0">&#41;</span>;<br />
<a href="http://www.php.net/print_r"><span class="kw3">print_r</span></a><span class="br0">&#40;</span><span class="re0">$total</span><span class="br0">&#41;</span>;</div>
<h4>PDO</h4>
<div class="dean_ch" style="white-space: wrap;"><span class="re0">$pdo</span> = <span class="kw2">new</span> PDO<span class="br0">&#40;</span><span class="st0">&#8216;mysql:dbname=test;host=127.0.0.1&#8242;</span>, <span class="st0">&#8216;test&#8217;</span>, <span class="st0">&#8216;test&#8217;</span><span class="br0">&#41;</span>;<br />
<span class="re0">$data</span> = <span class="re0">$pdo</span>-&gt;<span class="me1">query</span><span class="br0">&#40;</span><span class="st0">&quot;call get_users(&#8216;joey&#8217;, @totalUsers);&quot;</span><span class="br0">&#41;</span>-&gt;<span class="me1">fetchAll</span><span class="br0">&#40;</span>PDO::<span class="me2">FETCH_ASSOC</span><span class="br0">&#41;</span>;<br />
<span class="re0">$total_count</span> = <span class="re0">$pdo</span>-&gt;<span class="me1">query</span><span class="br0">&#40;</span><span class="st0">&quot;select @totalUsers;&quot;</span><span class="br0">&#41;</span>-&gt;<span class="me1">fetchAll</span><span class="br0">&#40;</span>PDO::<span class="me2">FETCH_ASSOC</span><span class="br0">&#41;</span>;<br />
<a href="http://www.php.net/print_r"><span class="kw3">print_r</span></a><span class="br0">&#40;</span><span class="re0">$data</span><span class="br0">&#41;</span>;<br />
<a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;&lt;br /&gt;&#8217;</span>;<br />
<a href="http://www.php.net/print_r"><span class="kw3">print_r</span></a><span class="br0">&#40;</span><span class="re0">$total_count</span><span class="br0">&#41;</span>;</div>
<p>This code should output:</p>
<h4>MySQL</h4>
<div class="dean_ch" style="white-space: wrap;"><a href="http://www.php.net/array"><span class="kw3">Array</span></a> <span class="br0">&#40;</span> <span class="br0">&#91;</span>users_id<span class="br0">&#93;</span> =&gt; <span class="nu0">6</span> <span class="br0">&#91;</span>first_name<span class="br0">&#93;</span> =&gt; Joey <span class="br0">&#91;</span>last_name<span class="br0">&#93;</span> =&gt; Rivera <span class="br0">&#41;</span><br />
<a href="http://www.php.net/array"><span class="kw3">Array</span></a> <span class="br0">&#40;</span> <span class="br0">&#91;</span>users_id<span class="br0">&#93;</span> =&gt; <span class="nu0">8</span> <span class="br0">&#91;</span>first_name<span class="br0">&#93;</span> =&gt; Joey <span class="br0">&#91;</span>last_name<span class="br0">&#93;</span> =&gt; Tester <span class="br0">&#41;</span><br />
<a href="http://www.php.net/array"><span class="kw3">Array</span></a> <span class="br0">&#40;</span> <span class="br0">&#91;</span>users_id<span class="br0">&#93;</span> =&gt; <span class="nu0">9</span> <span class="br0">&#91;</span>first_name<span class="br0">&#93;</span> =&gt; Joey <span class="br0">&#91;</span>last_name<span class="br0">&#93;</span> =&gt; Test <span class="br0">&#41;</span><br />
<a href="http://www.php.net/array"><span class="kw3">Array</span></a> <span class="br0">&#40;</span> <span class="br0">&#91;</span>@total<span class="br0">&#93;</span> =&gt; <span class="nu0">3</span> <span class="br0">&#41;</span></div>
<h4>PDO</h4>
<div class="dean_ch" style="white-space: wrap;"><a href="http://www.php.net/array"><span class="kw3">Array</span></a> <span class="br0">&#40;</span> <span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">Array</span></a> <span class="br0">&#40;</span> <span class="br0">&#91;</span>users_id<span class="br0">&#93;</span> =&gt; <span class="nu0">6</span> <span class="br0">&#91;</span>first_name<span class="br0">&#93;</span> =&gt; Joey <span class="br0">&#91;</span>last_name<span class="br0">&#93;</span> =&gt; Rivera <span class="br0">&#41;</span> <span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">Array</span></a> <span class="br0">&#40;</span> <span class="br0">&#91;</span>users_id<span class="br0">&#93;</span> =&gt; <span class="nu0">8</span> <span class="br0">&#91;</span>first_name<span class="br0">&#93;</span> =&gt; Joey <span class="br0">&#91;</span>last_name<span class="br0">&#93;</span> =&gt; Tester <span class="br0">&#41;</span> <span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">Array</span></a> <span class="br0">&#40;</span> <span class="br0">&#91;</span>users_id<span class="br0">&#93;</span> =&gt; <span class="nu0">9</span> <span class="br0">&#91;</span>first_name<span class="br0">&#93;</span> =&gt; Joey <span class="br0">&#91;</span>last_name<span class="br0">&#93;</span> =&gt; Test <span class="br0">&#41;</span> <span class="br0">&#41;</span><br />
<a href="http://www.php.net/array"><span class="kw3">Array</span></a> <span class="br0">&#40;</span> <span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">Array</span></a> <span class="br0">&#40;</span> <span class="br0">&#91;</span>@totalUsers<span class="br0">&#93;</span> =&gt; <span class="nu0">3</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span></div>
<p>Like I mentioned before, both sets of code are doing the same thing, calling two queries. First the stored procedure (passing in joey for firstname and @total as the out var) then query for the out variable @total. I took a few shortcuts with pdo so it seems like less code. I personally like pdo better and it&#8217;s what I use on my projects. I hope you all find this helpful and feel free to ask any question or post any comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joeyrivera.com/2009/using-mysql-stored-procedure-inout-and-recordset-w-php/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Using MySQL Stored Procedures with PHP mysql/mysqli/pdo</title>
		<link>http://www.joeyrivera.com/2009/using-mysql-stored-procedures-with-php-mysqlmysqlipdo/</link>
		<comments>http://www.joeyrivera.com/2009/using-mysql-stored-procedures-with-php-mysqlmysqlipdo/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 03:02:19 +0000</pubDate>
		<dc:creator>Joey</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[mysqli]]></category>
		<category><![CDATA[pdo]]></category>
		<category><![CDATA[sp]]></category>
		<category><![CDATA[stored procedure]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.joeyrivera.com/?p=284</guid>
		<description><![CDATA[Wondering how to use stored procedures with PHP and MySQL? So was I and here&#8217;s what I&#8217;ve learned. In this tutorial I&#8217;ll explain how to use PHP (I&#8217;m using 5.2.6) to call MySQL (I&#8217;m using 5.0.2) stored procedures using the following database extensions: MySQL - http://us.php.net/manual/en/book.mysql.php MySQLi - http://uk2.php.net/manual/en/class.mysqli.php PDO - http://us.php.net/manual/en/class.pdo.php First we need to setup our [...]]]></description>
			<content:encoded><![CDATA[<p>Wondering how to use stored procedures with PHP and MySQL? So was I and here&#8217;s what I&#8217;ve learned. In this tutorial I&#8217;ll explain how to use PHP (I&#8217;m using 5.2.6) to call MySQL (I&#8217;m using 5.0.2) stored procedures using the following database extensions:</p>
<ul>
<li>MySQL - <a href="http://us.php.net/manual/en/book.mysql.php">http://us.php.net/manual/en/book.mysql.php</a></li>
<li>MySQLi - <a href="http://uk2.php.net/manual/en/class.mysqli.php">http://uk2.php.net/manual/en/class.mysqli.php</a></li>
<li>PDO - <a href="http://us.php.net/manual/en/class.pdo.php">http://us.php.net/manual/en/class.pdo.php</a></li>
</ul>
<p>First we need to setup our enviroment which consists of a new database with one table and two stored procedures. In your db tool of choice (I&#8217;ll be using the <a title="MySQL Query Browser Download" href="http://dev.mysql.com/downloads/gui-tools/5.0.html" target="_blank">MySQL Query Browser</a>) create a new database named <em>test</em>. After you create the new database, make sure to add a user called <em>example </em>with password <em>example </em>to the database and give it read access.</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">CREATE DATABASE</span> `test`;</div>
<p>Now create the table <em>users</em>:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">DROP TABLE</span> IF <span class="kw1">EXISTS</span> `test`.`users`;<br />
<span class="kw1">CREATE TABLE</span> &nbsp;`test`.`users` <span class="br0">&#40;</span><br />
`users_id` <span class="kw2">INT</span><span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span> <span class="kw3">UNSIGNED</span> <span class="kw3">NOT NULL</span> <span class="kw3">AUTO_INCREMENT</span>,<br />
`first_name` <span class="kw2">VARCHAR</span><span class="br0">&#40;</span><span class="nu0">100</span><span class="br0">&#41;</span> <span class="kw3">NOT NULL</span>,<br />
`last_name` <span class="kw2">VARCHAR</span><span class="br0">&#40;</span><span class="nu0">100</span><span class="br0">&#41;</span> <span class="kw3">NOT NULL</span>,<br />
<span class="kw1">PRIMARY KEY</span> &nbsp;<span class="br0">&#40;</span>`users_id`<span class="br0">&#41;</span><br />
<span class="br0">&#41;</span> ENGINE=<span class="kw1">INNODB</span> <span class="kw3">DEFAULT</span> <span class="kw3">CHARSET</span>=latin1;</div>
<p><span id="more-284"></span><br />
Before we create the stored procedures, lets put some dummy data in the <em>users </em>table. To do that just run the following query:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">INSERT</span> <span class="kw1">INTO</span> `test`.`users` <span class="kw1">VALUES</span> <span class="br0">&#40;</span><span class="kw3">NULL</span>, <span class="st0">&#8216;Joey&#8217;</span>, <span class="st0">&#8216;Rivera&#8217;</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="kw3">NULL</span>, <span class="st0">&#8216;John&#8217;</span>, <span class="st0">&#8216;Doe&#8217;</span><span class="br0">&#41;</span>;</div>
<p>Next create the first stored procedure <em>get_user</em>:</p>
<div class="dean_ch" style="white-space: wrap;">DELIMITER $$<br />
<span class="kw1">DROP PROCEDURE</span> IF <span class="kw1">EXISTS</span> `test`.`get_user`$$<br />
<span class="kw1">CREATE PROCEDURE</span> &nbsp;`test`.`get_user`<br />
<span class="br0">&#40;</span><br />
<span class="kw5">IN</span> userId <span class="kw2">INT</span>,<br />
OUT firstName <span class="kw2">VARCHAR</span><span class="br0">&#40;</span><span class="nu0">100</span><span class="br0">&#41;</span>,<br />
OUT lastName <span class="kw2">VARCHAR</span><span class="br0">&#40;</span><span class="nu0">100</span><span class="br0">&#41;</span><br />
<span class="br0">&#41;</span><br />
<span class="kw1">BEGIN</span><br />
<span class="kw1">SELECT</span> first_name, last_name<br />
<span class="kw1">INTO</span> firstName, lastName<br />
<span class="kw1">FROM</span> users<br />
<span class="kw1">WHERE</span> users_id = userId;<br />
<span class="kw1">END</span> $$<br />
DELIMITER ;</div>
<p>Finally create the second and last stored procedure <em>get_users</em>:</p>
<div class="dean_ch" style="white-space: wrap;">DELIMITER $$<br />
<span class="kw1">DROP PROCEDURE</span> IF <span class="kw1">EXISTS</span> `test`.`get_users`$$<br />
<span class="kw1">CREATE PROCEDURE</span> &nbsp;`test`.`get_users`<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
<span class="kw1">BEGIN</span><br />
<span class="kw1">SELECT</span> *<br />
<span class="kw1">FROM</span> users;<br />
<span class="kw1">END</span> $$<br />
DELIMITER ;</div>
<p>If you understand the sql above, skip this section. The first script we ran to create a database is pretty self explanitory. The second script will delete the table <em>users </em>if it&#8217;s already in your database then it will recreate it. The table will consist of three fields: <em>users_id</em>, <em>first_name</em>, and <em>last_name</em>. The insert script will create two users: &#8216;Joey Rivera&#8217; and &#8216;John Doe&#8217;. </p>
<p>If stored procedures are new to you, don&#8217;t worry. They aren&#8217;t that complicated once you start playing with them. When looking at the code for the first stored procedure, <em>drop procedure</em> works the same way as dropping a table. First you want to check if the stored procedure is there and deleted before you recreate it. <em>Create </em>does just that, create the stored procedure in the database. <em>get_user </em>has three parameters: <em>userId</em>, <em>firstName</em>, and <em>lastName</em>. <em>IN </em>means when this stored procedure is called, this variable should be passed with a value. <em>OUT </em>means after the stored procedure executes, it will set the <em>OUT </em>variables with a value that can then be retrieved. You can also have <em>INOUT </em>variables but we don&#8217;t need them for this example.</p>
<p>The blulk of the code for the stored procedure goes in the <em>BEGIN</em> to <em>END</em> block. <em>get_user</em> is selecting the first and last name fields from the table users where the user id is equal to the <em>userId </em>variable being passed in. The other thing happening here is the two <em>OUT </em>variables are getting the values retrieved from the select statement. Variable <em>firstName </em>is set to the field <em>first_name </em>and <em>lastName </em>is being set to <em>last_name</em>. That&#8217;s it for <em>get_user</em>. <em>get_users </em>doesn&#8217;t have any <em>IN </em>nor <em>OUT </em>variables. When that stored procedure is executed it will return a recordset instead of variables. </p>
<p>Now that we have our environment set, we are ready to start our tests. Depending on what you are trying to achieve, you may be using <em>mysql</em>, <em>mysqli</em>, or <em>PDO</em>. I&#8217;m going to run the same tests with all three to show you the difference as well as the limitation of <em>mysql </em>compared to <em>mysqli </em>and <em>PDO</em>. One of the tests I&#8217;ll be running doesn&#8217;t work with <em>mysql </em>while all the tests work with <em>mysqli </em>and <em>PDO</em>. </p>
<p>The three tests will be:</p>
<ol>
<li>A simple select statement</li>
<li>Calling stored procedure passing <em>IN </em>variable and retrieve <em>OUT </em>variables &#8211; <em>get_user</em></li>
<li>Calling stored procedure with no parameters and returns a recordset &#8211; <em>get_users</em></li>
</ol>
<p>Below is the code to run all three tests with each of the database extensions:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">&lt;?php</span><br />
<span class="co1">// MYSQL</span><br />
<span class="re0">$mysql</span> = <a href="http://www.php.net/mysql_connect"><span class="kw3">mysql_connect</span></a><span class="br0">&#40;</span><span class="st0">&#8216;localhost&#8217;</span>, <span class="st0">&#8216;example&#8217;</span>, <span class="st0">&#8216;example&#8217;</span><span class="br0">&#41;</span>;<br />
<a href="http://www.php.net/mysql_select_db"><span class="kw3">mysql_select_db</span></a><span class="br0">&#40;</span><span class="st0">&#8216;test&#8217;</span>, <span class="re0">$mysql</span><span class="br0">&#41;</span>;</p>
<p>
<a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">&#8216;&lt;h3&gt;MYSQL: simple select&lt;/h3&gt;&#8217;</span>;<br />
<span class="re0">$rs</span> = <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span> <span class="st0">&#8216;SELECT * FROM users;&#8217;</span> <span class="br0">&#41;</span>;<br />
<span class="kw1">while</span><span class="br0">&#40;</span><span class="re0">$row</span> = <a href="http://www.php.net/mysql_fetch_assoc"><span class="kw3">mysql_fetch_assoc</span></a><span class="br0">&#40;</span><span class="re0">$rs</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
debug<span class="br0">&#40;</span><span class="re0">$row</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p>
<a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">&#8216;&lt;h3&gt;MYSQL: calling sp with out variables&lt;/h3&gt;&#8217;</span>;<br />
<span class="re0">$rs</span> = <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span> <span class="st0">&#8216;CALL get_user(1, @first, @last)&#8217;</span> <span class="br0">&#41;</span>;<br />
<span class="re0">$rs</span> = <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span> <span class="st0">&#8216;SELECT @first, @last&#8217;</span> <span class="br0">&#41;</span>;<br />
<span class="kw1">while</span><span class="br0">&#40;</span><span class="re0">$row</span> = <a href="http://www.php.net/mysql_fetch_assoc"><span class="kw3">mysql_fetch_assoc</span></a><span class="br0">&#40;</span><span class="re0">$rs</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
debug<span class="br0">&#40;</span><span class="re0">$row</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p>
<a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">&#8216;&lt;h3&gt;MYSQL: calling sp returning a recordset &#8211; doesn<span class="es0">\&#8217;</span>t work&lt;/h3&gt;&#8217;</span>;<br />
<span class="re0">$rs</span> = <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span> <span class="st0">&#8216;CALL get_users()&#8217;</span> <span class="br0">&#41;</span>;<br />
<span class="kw1">while</span><span class="br0">&#40;</span><span class="re0">$row</span> = <a href="http://www.php.net/mysql_fetch_assoc"><span class="kw3">mysql_fetch_assoc</span></a><span class="br0">&#40;</span><span class="re0">$rs</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
debug<span class="br0">&#40;</span><span class="re0">$row</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p>
<span class="co1">// MYSQLI</span><br />
<span class="re0">$mysqli</span> = <span class="kw2">new</span> mysqli<span class="br0">&#40;</span><span class="st0">&#8216;localhost&#8217;</span>, <span class="st0">&#8216;example&#8217;</span>, <span class="st0">&#8216;example&#8217;</span>, <span class="st0">&#8216;test&#8217;</span><span class="br0">&#41;</span>;</p>
<p>
<a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">&#8216;&lt;h3&gt;MYSQLI: simple select&lt;/h3&gt;&#8217;</span>;<br />
<span class="re0">$rs</span> = <span class="re0">$mysqli</span>-&gt;<span class="me1">query</span><span class="br0">&#40;</span> <span class="st0">&#8216;SELECT * FROM users;&#8217;</span> <span class="br0">&#41;</span>;<br />
<span class="kw1">while</span><span class="br0">&#40;</span><span class="re0">$row</span> = <span class="re0">$rs</span>-&gt;<span class="me1">fetch_object</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
debug<span class="br0">&#40;</span><span class="re0">$row</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p>
<a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">&#8216;&lt;h3&gt;MYSQLI: calling sp with out variables&lt;/h3&gt;&#8217;</span>;<br />
<span class="re0">$rs</span> = <span class="re0">$mysqli</span>-&gt;<span class="me1">query</span><span class="br0">&#40;</span> <span class="st0">&#8216;CALL get_user(1, @first, @last)&#8217;</span> <span class="br0">&#41;</span>;<br />
<span class="re0">$rs</span> = <span class="re0">$mysqli</span>-&gt;<span class="me1">query</span><span class="br0">&#40;</span> <span class="st0">&#8216;SELECT @first, @last&#8217;</span> <span class="br0">&#41;</span>;<br />
<span class="kw1">while</span><span class="br0">&#40;</span><span class="re0">$row</span> = <span class="re0">$rs</span>-&gt;<span class="me1">fetch_object</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
debug<span class="br0">&#40;</span><span class="re0">$row</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p>
<a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">&#8216;&lt;h3&gt;MYSQLI: calling sp returning a recordset&lt;/h3&gt;&#8217;</span>;<br />
<span class="re0">$rs</span> = <span class="re0">$mysqli</span>-&gt;<span class="me1">query</span><span class="br0">&#40;</span> <span class="st0">&#8216;CALL get_users()&#8217;</span> <span class="br0">&#41;</span>;<br />
<span class="kw1">while</span><span class="br0">&#40;</span><span class="re0">$row</span> = <span class="re0">$rs</span>-&gt;<span class="me1">fetch_object</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
debug<span class="br0">&#40;</span><span class="re0">$row</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p>
<span class="co1">// PDO</span><br />
<span class="re0">$pdo</span> = <span class="kw2">new</span> PDO<span class="br0">&#40;</span><span class="st0">&#8216;mysql:dbname=test;host=127.0.0.1&#8242;</span>, <span class="st0">&#8216;example&#8217;</span>, <span class="st0">&#8216;example&#8217;</span><span class="br0">&#41;</span>;</p>
<p>
<a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">&#8216;&lt;h3&gt;PDO: simple select&lt;/h3&gt;&#8217;</span>;<br />
<span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$pdo</span>-&gt;<span class="me1">query</span><span class="br0">&#40;</span> <span class="st0">&#8216;SELECT * FROM users;&#8217;</span> <span class="br0">&#41;</span> <span class="kw1">as</span> <span class="re0">$row</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
debug<span class="br0">&#40;</span><span class="re0">$row</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p>
<a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">&#8216;&lt;h3&gt;PDO: calling sp with out variables&lt;/h3&gt;&#8217;</span>;<br />
<span class="re0">$pdo</span>-&gt;<span class="me1">query</span><span class="br0">&#40;</span> <span class="st0">&#8216;CALL get_user(1, @first, @last)&#8217;</span> <span class="br0">&#41;</span>;<br />
<span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$pdo</span>-&gt;<span class="me1">query</span><span class="br0">&#40;</span> <span class="st0">&#8216;SELECT @first, @last&#8217;</span> <span class="br0">&#41;</span> <span class="kw1">as</span> <span class="re0">$row</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
debug<span class="br0">&#40;</span><span class="re0">$row</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p>
<a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">&#8216;&lt;h3&gt;PDO: calling sp returning a recordset&lt;/h3&gt;&#8217;</span>;<br />
<span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$pdo</span>-&gt;<span class="me1">query</span><span class="br0">&#40;</span> <span class="st0">&#8216;CALL get_users()&#8217;</span> <span class="br0">&#41;</span> <span class="kw1">as</span> <span class="re0">$row</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
debug<span class="br0">&#40;</span><span class="re0">$row</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p>
<span class="kw2">function</span> debug<span class="br0">&#40;</span><span class="re0">$o</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">&#8216;&lt;pre&gt;&#8217;</span>;<br />
<a href="http://www.php.net/print_r"><span class="kw3">print_r</span></a><span class="br0">&#40;</span><span class="re0">$o</span><span class="br0">&#41;</span>;<br />
<a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="st0">&#8216;&lt;/pre&gt;&#8217;</span>;<br />
<span class="br0">&#125;</span><br />
<span class="kw2">?&gt;</span></div>
<p> <br />
When you run this code you get the following results:</p>
<div class="dean_ch" style="white-space: wrap;"><a href="http://www.php.net/mysql"><span class="kw3">MYSQL</span></a>: simple select<br />
<a href="http://www.php.net/array"><span class="kw3">Array</span></a><br />
<span class="re1"><span class="br0">&#40;</span><br />
&nbsp; &nbsp; <span class="br0">&#91;</span>users_id<span class="br0">&#93;</span> =&gt; <span class="nu0">1</span><br />
&nbsp; &nbsp; <span class="br0">&#91;</span>first_name<span class="br0">&#93;</span> =&gt; Joey<br />
&nbsp; &nbsp; <span class="br0">&#91;</span>last_name<span class="br0">&#93;</span> =&gt; Rivera<br />
<span class="br0">&#41;</span></span><br />
<a href="http://www.php.net/array"><span class="kw3">Array</span></a><br />
<span class="br0">&#40;</span><br />
&nbsp; &nbsp; <span class="br0">&#91;</span>users_id<span class="br0">&#93;</span> =&gt; <span class="nu0">2</span><br />
&nbsp; &nbsp; <span class="br0">&#91;</span>first_name<span class="br0">&#93;</span> =&gt; John<br />
&nbsp; &nbsp; <span class="br0">&#91;</span>last_name<span class="br0">&#93;</span> =&gt; Doe<br />
<span class="br0">&#41;</span></p>
<p>
<a href="http://www.php.net/mysql"><span class="kw3">MYSQL</span></a>: calling sp with out variables<br />
<a href="http://www.php.net/array"><span class="kw3">Array</span></a><br />
<span class="br0">&#40;</span><br />
&nbsp; &nbsp; <span class="br0">&#91;</span>@first<span class="br0">&#93;</span> =&gt; Joey<br />
&nbsp; &nbsp; <span class="br0">&#91;</span>@last<span class="br0">&#93;</span> =&gt; Rivera<br />
<span class="br0">&#41;</span></p>
<p>
<a href="http://www.php.net/mysql"><span class="kw3">MYSQL</span></a>: calling sp returning a recordset &#8211; doesn<span class="st0">&#8216;t work<br />
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in ***test.php on line 24</p>
<p>
MYSQLI: simple select<br />
stdClass Object<br />
(<br />
&nbsp; &nbsp; [users_id] =&gt; 1<br />
&nbsp; &nbsp; [first_name] =&gt; Joey<br />
&nbsp; &nbsp; [last_name] =&gt; Rivera<br />
)<br />
stdClass Object<br />
(<br />
&nbsp; &nbsp; [users_id] =&gt; 2<br />
&nbsp; &nbsp; [first_name] =&gt; John<br />
&nbsp; &nbsp; [last_name] =&gt; Doe<br />
)</p>
<p>
MYSQLI: calling sp with out variables<br />
stdClass Object<br />
(<br />
&nbsp; &nbsp; [@first] =&gt; Joey<br />
&nbsp; &nbsp; [@last] =&gt; Rivera<br />
)</p>
<p>
MYSQLI: calling sp returning a recordset<br />
stdClass Object<br />
(<br />
&nbsp; &nbsp; [users_id] =&gt; 1<br />
&nbsp; &nbsp; [first_name] =&gt; Joey<br />
&nbsp; &nbsp; [last_name] =&gt; Rivera<br />
)<br />
stdClass Object<br />
(<br />
&nbsp; &nbsp; [users_id] =&gt; 2<br />
&nbsp; &nbsp; [first_name] =&gt; John<br />
&nbsp; &nbsp; [last_name] =&gt; Doe<br />
)</p>
<p>
PDO: simple select<br />
Array<br />
(<br />
&nbsp; &nbsp; [users_id] =&gt; 1<br />
&nbsp; &nbsp; [0] =&gt; 1<br />
&nbsp; &nbsp; [first_name] =&gt; Joey<br />
&nbsp; &nbsp; [1] =&gt; Joey<br />
&nbsp; &nbsp; [last_name] =&gt; Rivera<br />
&nbsp; &nbsp; [2] =&gt; Rivera<br />
)<br />
Array<br />
(<br />
&nbsp; &nbsp; [users_id] =&gt; 2<br />
&nbsp; &nbsp; [0] =&gt; 2<br />
&nbsp; &nbsp; [first_name] =&gt; John<br />
&nbsp; &nbsp; [1] =&gt; John<br />
&nbsp; &nbsp; [last_name] =&gt; Doe<br />
&nbsp; &nbsp; [2] =&gt; Doe<br />
)</p>
<p>
PDO: calling sp with out variables<br />
Array<br />
(<br />
&nbsp; &nbsp; [@first] =&gt; Joey<br />
&nbsp; &nbsp; [0] =&gt; Joey<br />
&nbsp; &nbsp; [@last] =&gt; Rivera<br />
&nbsp; &nbsp; [1] =&gt; Rivera<br />
)</p>
<p>
PDO: calling sp returning a recordset<br />
Array<br />
(<br />
&nbsp; &nbsp; [users_id] =&gt; 1<br />
&nbsp; &nbsp; [0] =&gt; 1<br />
&nbsp; &nbsp; [first_name] =&gt; Joey<br />
&nbsp; &nbsp; [1] =&gt; Joey<br />
&nbsp; &nbsp; [last_name] =&gt; Rivera<br />
&nbsp; &nbsp; [2] =&gt; Rivera<br />
)<br />
Array<br />
(<br />
&nbsp; &nbsp; [users_id] =&gt; 2<br />
&nbsp; &nbsp; [0] =&gt; 2<br />
&nbsp; &nbsp; [first_name] =&gt; John<br />
&nbsp; &nbsp; [1] =&gt; John<br />
&nbsp; &nbsp; [last_name] =&gt; Doe<br />
&nbsp; &nbsp; [2] =&gt; Doe<br />
)</span></div>
<p>As you can see from the results above, <em>mysql </em>could not get the recordset returned by the stored procedure while <em>mysqli </em>and <em>PDO </em>could. After some more research, some people mentioned (<a href="http://bobfield.blogspot.com/2006/09/php-and-mysql-stored-procedures.html">Bob&#8217;s World</a>, <a href="http://us.php.net/manual/en/function.mysql-connect.php#86645">php.net</a>) that by adding &#8216;false,65536&#8242; to the end of the <em>mysql_connect </em>line, <em>mysql </em>could then get recordsets from stored procedures. I tried this and in fact it does work. So by changing</p>
<div class="dean_ch" style="white-space: wrap;"><span class="re0">$mysql</span> = <a href="http://www.php.net/mysql_connect"><span class="kw3">mysql_connect</span></a><span class="br0">&#40;</span><span class="st0">&#8216;localhost&#8217;</span>, <span class="st0">&#8216;example&#8217;</span>, <span class="st0">&#8216;example&#8217;</span><span class="br0">&#41;</span>;</div>
<p>to:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="re0">$mysql</span> = <a href="http://www.php.net/mysql_connect"><span class="kw3">mysql_connect</span></a><span class="br0">&#40;</span><span class="st0">&#8216;localhost&#8217;</span>, <span class="st0">&#8216;example&#8217;</span>, <span class="st0">&#8216;example&#8217;</span>,<span class="kw2">false</span>,<span class="nu0">65536</span><span class="br0">&#41;</span>;</div>
<p>all the different database extensions work on all tests. So in the end, it seems all of these can work with stored procedures just as well.</p>
<p>Get the PHP code file: <a href="http://www.joeyrivera.com/blog_files/284/test.txt">test.php</a><br />
Get the DB script file: <a href="http://www.joeyrivera.com/blog_files/284/php_sp_example.sql">php_sp_example.sql</a></p>
<p>I hope this was helpful and feel free to leave any questions or comments.</p>
<p>EDIT: I have made a new post about doing the above but with a stored procedure that has in/out params as well as returns a recordset. Post at: <a href="http://www.joeyrivera.com/2009/using-mysql-stored-procedure-inout-and-recordset-w-php/">Using MySQL stored procedures with in/out and returns a recordset</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joeyrivera.com/2009/using-mysql-stored-procedures-with-php-mysqlmysqlipdo/feed/</wfw:commentRss>
		<slash:comments>81</slash:comments>
		</item>
	</channel>
</rss>

