PHP 4.0 Bug #8831 Updated: a script works on 2 servers I use, and doesn't work on a third one
| From: | mage at diablo dot hu | Date: | Wed, 24 Jan 2001 20:53:11 +0000 |
| Subject: | PHP 4.0 Bug #8831 Updated: a script works on 2 servers I use, and doesn't work on a third one | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-44927@lists.php.net to get a copy of this message | ||
ID: 8831
User Update by: mage@diablo.hu
Status: Open
Bug Type: MySQL related
Description: a script works on 2 servers I use, and doesn't work on a third one
Okay, I have found a note about mysql_connect() in the manual:
"In case a second call is made to mysql_connect() with the same arguments, no new link will be
established, but instead, the link identifier of the already opened link will be returned."
That can explain what is wrong in my script. However, in older php versions, I could do connect
again (and get same identifier, I checked), and close it as many times as I connected. Now I have to
upgrade all my older projects?
Previous Comments:
---------------------------------------------------------------------------
[2001-01-21 20:46:18] mage@diablo.hu
Dear Support,
One of my project were must go to another server, and I got a trouble
with my functions.
I try to write a short code to explain it.
This script works well on my computer, windows 98 se, php 4.0.3. Also
works on debian a server, php 4.0.3.
There is another debian server (that was php 4.0.3 too), and this script
crashes on it. I tried to reinstall mysql, php (the new 4.0.4pl), apache,
but that did not help. I show a short code:
------
<?php
$base = mysql_connect('localhost','kepes','***'); // I have a password
of course...
mysql_select_db('KEPES');
$rows = mysql_query("SELECT * FROM ARTICLE_STATE ORDER BY
article_state_id",$base);
test();
$rows = mysql_query("SELECT * FROM ARTICLE_STATE ORDER BY
article_state_id",$base);
mysql_close($base);
function query_more($query,$base) {
$result = array();
$data = mysql_query($query,$base);
while ($row = mysql_fetch_array($data)) {
$result[] = $row;
}
// if ($result) {
// mysql_free_result($data);
// }
return $result;
}
function test() {
$base = mysql_connect('localhost','kepes','***');
mysql_select_db('KEPES');
$rows = query_more("SELECT * FROM ARTICLE_STATE ORDER BY
article_state_id",$base);
mysql_close($base);
}
?>
-----
That outputs nothing on my computer, nothing on the first debian server.
That's ok.
But this outputs on the server where I'd use it the below:
"Warning: Supplied argument is not a valid MySQL result resource in
/home/kepes/public_html/test/test5.php4 on line 16
Warning: 1 is not a valid MySQL-Link resource in
/home/kepes/public_html/test/test5.php4 on line 10"
I figured out this is if I use at least 2 mysql connections same time.
Another interest thing, if I comment out the:
---
while ($row = mysql_fetch_array($data)) {
$result[] = $row;
}
---
part of script, this also works on the 2nd server (but I can't use that way of course).
Because my db-scripts are based upon methods like above, I would like to
know what the problem is. I include some php info.
PHP Version 4.0.5-dev
System Linux ditto 2.2.17 #1 Mon Dec 4 23:29:54 CET 2000 i686 unknown
Build Date Dec 10 2000
Configure Command './configure' '--with-mysql' '--with-apxs'
Server API Apache
Virtual Directory Support disabled
Configuration File (php.ini) Path /usr/local/lib
ZEND_DEBUG disabled
Thread Safety
disabled
---------
mysql
MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 3.23.22-beta
MYSQL_INCLUDE
MYSQL_LFLAGS
MYSQL_LIBS
Directive Local Value Master Value
mysql.allow_persistent On On
mysql.max_links Unlimited Unlimited
mysql.max_persistent Unlimited Unlimited
-----
Thank You,
Mage
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=8831