As at 5.0.x and 4.3.x: This function should never be used with shared links; instead you should set your link variables to null.
(This explains red's and beer's () problems in previous comments)
Here is how shared links work:
- Each link is a resource. mysql_connect() by default looks for a resource with the same paramaters. If one exists, it will return the existing resource.
- Every assignment of that resource to a variable increases the resource's reference count.
- When the reference is decremented to zero, the underlying TCP/socket connection is closed.
- Every assignment of a variable away from that resource decrements the reference count. (This includes a function level variable going out of scope)
- mysql_close() also decrements the reference count.
Note the last two points: mysql_close() _and_ reassignment of a variable decrement the link's reference count.
A common mistake is a function like:
<?
function dothings() {
$link = mysql_open(...);
.. do some queries ..
mysql_close($link)
$link = null;
}
?>
this will decrement the counter twice, possibly closing the underlying connection and causing errors in other parts of the program.
http://bugs.php.net/bug.php?id=30525 "this is not a bug but just how it works"
mysql_client_encoding